Was bedeutet serverless?
Serverless computing bedeutet, dass die für die Ausführung von Code erforderlichen Maschinenressourcen vom cloud provider verwaltet werden. Genauer gesagt bedeutet serverless nicht, dass wir überhaupt keine servers verwenden. Es bedeutet, dass wir uns keine Sorgen um die Infrastruktur machen müssen und die Verwaltungsaufgaben automatisiert sind.
Aus Sicht der developers besteht der Hauptvorteil darin, Zeit bei Aufgaben im Zusammenhang mit Provisioning und Maintenance zu sparen und sich auf das Schreiben von Code und die Bereitstellung neuer Funktionen zu konzentrieren.
Serverless architecture ist eng mit cloud computing verbunden. Der erste Serverless-Computing-Service, Google Cloud Engine, wurde 2008 von Google eingeführt. Es ist eine Plattform, die mehrere Programmiersprachen für das Hosting von web applications unterstützt.
Derzeit gibt es mehr serverless computing providers auf dem Markt. Die bekanntesten sind Amazon Web Services (AWS), Microsoft Azure und Google Cloud Platform (GCP), aber es gibt auch andere Optionen, wie z. B. die Installation eines serverless framework auf deinem eigenen Cluster, z. B. Kubless, OpenFaaS, Serverless Framework oder Apache OpenWhisk.
Der Schwerpunkt dieses Artikels liegt auf dem Modell Function as a Service (FaaS). FaaS ist eine Variante des serverless computing, die es ermöglicht, Code als Reaktion auf Ereignisse wie eine HTTP request oder ein neues Element in der Warteschlange auszuführen. Es ist eine gute Wahl für single purpose, short tasks.

Vor- und Nachteile von serverless applications
Vorteile
Pay only for what you use – in vielen Situationen kann serverless computing helfen, Geld zu sparen, z. B. wenn deine Anwendung nur während der Geschäftszeiten genutzt wird oder du nur in einem bestimmten Zeitraum eine sehr hohe capacity benötigst. In diesen Situationen kannst du planen, wann deine Anwendung eingeschaltet werden soll und wie sie skaliert werden soll.
Less management work – dieser Punkt ergibt sich aus dem vorherigen. Anstatt Leute einzustellen, die administrative und operative Aufgaben erledigen, kannst du serverless verwenden und dich auf design und development konzentrieren. Natürlich kannst du einige low level limits haben, die du nicht ändern kannst, aber dadurch erhältst du bessere security und scalability.
Better productivity – durch die Verwendung von Functions as a Service können developers von event driven programming profitieren, was den Code vereinfachen kann.
Nachteile
Performance – wenn keine laufende instance einer bestimmten serverless function vorhanden ist, ist die Wartezeit länger. Dies wird als Cold start bezeichnet.
Timeout – in der Regel gibt es eine maximale Dauer für eine einzelne Ausführung. Im Folgenden sind die Timeout-Limits für die beliebtesten cloud providers aufgeführt:
AWS Lambda - 15 Minuten
Azure Functions - 10 Minuten (im Premium Plan – unlimited)
GCP Cloud Functions – 9 Minuten
Schwierigeres Testing und Debugging als traditional server code.
Dependance on a specific provider – es ist schwieriger, eine Lösung zu einem anderen provider zu verschieben.
Teurer in Situationen mit stable resource usage.
Wann solltest du serverless architecture verwenden? (Szenarien)
Du kannst jedes serverless computing erstellen, aber es ist nicht immer sinnvoll, dies zu tun (siehe Abschnitt "Nachteile" oben). Unabhängig von der technischen Möglichkeit, eine bestimmte Lösung mit dem serverless approach zu erstellen, gibt es typische Situationen, in denen serverless am vorteilhaftesten ist.
HTTP triggered requests – du kannst serverless computing erstellen, z. B. eine API zum Abonnieren eines Newsletters.
Event-driven architecture – serverless computing eignet sich hervorragend für die Verarbeitung incoming files wie images oder JSONs, z. B. das automatische Umbenennen und Resizing von files, die in den Bucket gelegt werden.
Serverless computing kann in Situationen mit unpredictable usage patterns nützlich sein, z. B. wenn du die Menge der benötigten Ressourcen nicht abschätzen kannst und nicht möchtest, dass dir die Ressourcen ausgehen.
FaaS ist für small, independent und non-compute intensive tasks wie das Senden einer E-Mail gedacht.
Erstellen von serverless applications - best practices
Design & Scaling
Serverless applications sind in der Regel Teil von distributed systems und sollten stateless sein.
Versuche, FaaS applications so einfach wie möglich zu halten.
Schätze die richtige Anzahl von active instances. Denke nicht nur daran, die Availability deines Dienstes sicherzustellen, sondern auch an die Kosten. Wenn du unpredictable expenses vermeiden möchtest, beschränke die Anzahl der max instances.
Berechne die Menge an Speicher, die für die Ausführung der function benötigt wird, und konfiguriere das memory limit. Denke daran, du zahlst für das, was du verwendest.
Debugging & Testing
Angesichts der Tatsache, dass das Testing von distributed und serverless computing viel schwieriger ist als bei centralized ones, solltest du:
Reliable und detailed logging vorbereiten.
Den Status von executions überwachen, um Failure zu identifizieren und Alerts einzurichten, wenn dies geschieht.
Nicht stillschweigend failen – stelle sicher, dass jedes unerwartete Verhalten bemerkt wird.
Configuration & Security
Trenne die Configuration immer vom application code und speichere sie in einer separaten Datei, z. B. JSON oder YAML.
Denke an Timeouts in FaaS – functions sollten für short tasks mit predictable execution times verwendet werden.
Verwalte eine Codebasis, die im Version Control System für alle Environments (Development, Staging, Production) verfolgt wird. Dies hilft dir, einen konsistenteren Code zu pflegen und erleichtert den Deployment process.

Beispiele
- Serverless API
- Beschreibung: Eine HTTP request ruft eine function auf, und die function führt eine Query auf einer Database aus, z. B. insert record in table.
- Use case: CRUD operations.
- Processing files
- Beschreibung: Das Bereitstellen einer neuen Datei im Storage ruft eine function auf. Files müssen resized und compressed werden, um Speicherplatz zu sparen, und müssen mit einem definierten file name pattern gespeichert werden.
- Use case: Handling delivered files.
- Adding tasks to the queue
- Beschreibung: HTTP requests rufen die erste function auf, die einfach einen neuen Task zur Queue hinzufügt. Die zweite function konsumiert Queue elements und führt einen längeren Task aus.
- Use case: Sending confirmation e-mail.
Zusammenfassung
Serverless computing wird immer beliebter. Gleichzeitig steht es vor dynamischen Veränderungen und der Weiterentwicklung. Die Verwendung dieser Art von Lösungen erfordert neue Fähigkeiten und unterschiedliche Approach in vielen Bereichen, wie z. B. Designing, Developing, Testing und Maintaining von Applications, bringt aber neue Möglichkeiten und könnte das Leben der Developers erleichtern.
Gcp for business wofur wird die google cloud platform verwendet