Serverless: seine Grenzen zu kennen, heißt, es richtig nutzen

„Serverless“ ist eines der neuen Hype-Wörter der IT-Branche. Die Analysten von Gartner prognostizieren, dass die Hälfte aller Unternehmen weltweit bis 2025 ein Serverless-Modell implementiert haben werden – verglichen mit 20 Prozent heute.

Nüchtern betrachtet handelt es sich bei Serverless-Diensten um eine Erweiterung von Platform-as-a-Service (PaaS). Der Begriff umfasst eine breite Palette von Cloud-Services, die es Entwicklern und Unternehmen ermöglicht, Dienste in Containern ausführen oder Daten in Datenbanken zu speichern, ohne sich mit der Verwaltung der zugrunde liegenden Infrastruktur belasten zu müssen. Entwickler haben so die Möglichkeit, sich komplett auf ihren Code zu konzentrieren. Während diese Herangehensweise zwar die Komplexität der Dienstebereitstellung beseitigt, bindet sie PaaS-Anwendungen immer noch an einen Server, was die Skalierbarkeit einschränkt und Fixkosten verursacht. Entwickler können virtualisierte Container wie „Dynos“ von Heroku verwenden, mit denen Sie Ihren Code einfach bereitstellen und ausführen können, aber diese sind nicht in der Lage, auf null zu skalieren. Das hat seinen Preis. 

Anzeige

Serverless scheint in der Tat die ideale Lösung zu sein, jedwede App auf Basis von Microservices und einer Event Driven Architecture zu starten: hohe Skalierbarkeit, Pay-as-you-go, Flexibilität, keine Serververwaltung. Was auf dem Papier vorteilhaft klingt, ist in der Realität allerdings nur schwer zu implementieren. Dmitri Zimine schreibt in seinem Artikel dazu: „In einem geschlossenen System gibt es so etwas wie Freibier nicht: Um einen Vorteil zu erlangen, muss etwas geopfert werden.“ Entwickler und die Serverless-Community mussten neue Tools, Prozesse und Praktiken erstellen, um Beschränkungen der Anbieter zu umgehen, sei es bei der Handhabung von Latenzzeiten (Kaltstart) oder bei der einfachen gleichchzeitigen Bereitstellung mehrerer Funktionen.

Kurz gesagt: während Serverless viele Vorteile bietet, ist es alles andere als ein Allheilmittel. 

Befreit von der Serververwaltung

Wie der Namen suggeriert bedeutet „Serverless“, dass Entwickler keine Server verwalten müssen, da alles vom Systemanbieter erledigt wird, von Systemaktualisierungen über Zugangskontrolle und Skalierung bis hin zur Serverredundanz. Tatsächlich stehen hinter Serverless-Plattformen Server, die von mehreren Nutzern des Dienstes gleichzeitig genutzt werden. Die Cloud-Anbieter kümmern sich um die Verwaltung der Infrastruktur und das Sicherheitsmanagement, hauptsächlich um sicherzustellen, dass sich Nutzer nicht ins Gehege kommen.

Anzeige

Das Hauptproblem einer fehlenden Serververwaltung besteht jedoch darin, dass User die Kontrolle darüber verlieren, wo und wie ihr Code ausgeführt wird und vor allem, wie und wo ihre Daten verarbeitet werden. Laut der O’Reilly Serverless-Umfrage 2019 halten vor allem Sicherheitsbedenken Unternehmen davon ab, Serverless einzuführen. Einige Anbieter stellen Serverless-Anwendungen allerdings in isolierten, sicheren Umgebungen mit hoher Verfügbarkeit bereit.

Skalierbarkeit

In den letzten Jahren sind effiziente Open-Source-Tools entstanden, die eine automatische Skalierung des Datenverkehrs oder des Ressourcenverbrauchs einer Infrastruktur ermöglichen, z. B. Orchestrierungs-Plattformen für Container wie Kubernetes oder Micro-VM wie Firecracker. Darauf aufbauend können Serverless Compute Services einen Code oder containerisierte Anwendungen ausführen, die sich an Traffic-Schwankungen anpassen. Serverless-Dienste funktionieren vor allem dank gemeinsamer Nutzung von Ressourcen und Systemoptimierung, die einen Start von Null in weniger als einer halben Sekunde ermöglichen.

Es gibt weder unbegrenzte noch unverzügliche Skalierbarkeit. Gemeinsame Nutzung von Servern und die Containerisierung helfen, dies zu verbergen, indem sie permanent verfügbare Nodesermöglichen, die in der Lage sind, Container schnell zu starten, um den Bedarf zu decken. Hinter Serverless stehen jedoch immer noch Server, die an ihre physischen Beschränkungen gebunden sind. Darüber hinaus erfordert die Bündelung von Ressourcen, dass Cloud-Anbieter allen Nutzern, die die gleichen Nodes teilen, dasselbe Service-Niveau bieten. Dies erfordert die Etablierung von Beschränkungen und Quoten, die im direkten Widerspruch mit der unbegrenzten Skalierbarkeit der Anwendungen stehen.

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.

Flexibilität

Wird Serverless auf Function-as-a-Service (FaaS) beschränkt, indem jeder Dienst in Funktionen zerlegt wird, so treibt man das Konzept der Microservices auf einen Punkt, an dem jeder Teil eines Systems unabhängig verwaltet (für Updates) und skaliert werden kann. Selbst wenn beispielsweise das Abrechnungs- oder Anmeldesystem einer Website viele Anfragen erhält, hat das bei FaaS keine Auswirkungen auf das Benachrichtigungs- oder Informationssystem, die nur wenig genutzt werden. Serverless kann man daher als eine Ableitung von Microservices-basierten Anwendungen betrachten, bei denen jeder Microservice auf eine Reihe von Funktionen heruntergebrochen werden kann.

 

Diagram

Description automatically generated

 

Dies impliziert jedoch eine immer komplexere Architektur, da jede einzelne Funktion oder jeder einzelne Dienst auf eine einzige Grundoperation reduziert wird, wobei die Logik durch Middleware oder Dienste von Drittanbietern (Message Queue, Workflow Engine …) unterstützt wird. Dies kann Serverless-Anwendungen in eine Art schwer zu handhabendem Kleintierzoo verwandeln. Einige argumentieren allerdings, dass es sich nicht um einen Nachteil handelt, sondern in Wirklichkeit um ein Zeichen für ein Kulturproblem. Demnach erfordert der Serverless-Ansatz eine komplett andere Art und Weise, wie Anwendungen konzipiert werden, vom Erstellen von Diensten bis zu deren Nutzung und vom Code bis zur Konfiguration. 

 

Calendar

Description automatically generated

 

Einfache Verwaltung

Wie viele Managed Services funktioniert auch Serverless Plug-and-Play nach dem Motto: liefern Sie Ihren Code oder Container ab, und wir kümmern uns um den Rest. Bei Containern ist eine isolierte Umgebung auf einer Serverless-Lösung einfacher zu verwalten als z. B. ein Kubernetes-Cluster. Die Wahl eines Anbieters, der eine API und eine Benutzeroberfläche anbietet, kann die Bereitstellung erleichtern.

Die Ausführung hängt letztlich davon ab, ob Benutzer auf dem vom Cloud-Anbieter vorgegebenen Pfad bleiben wollen oder ob ihre Anwendung besondere Anforderungen stellt.

Kosteneffizienz

Dank Skaleneffekten und gemeinsamer Nutzung von Ressourcen bieten Cloud-Anbieter die Möglichkeit, auf null zu skalieren. Das bedeutet, dass nur ihre Steuerungsebene läuft, während die Anwendungen der Kunden im Standby verweilen, bereit eingehende Aufgaben zu übernehmen. Wenn sie ihre Anwendungen für Serverless optimieren, können Entwickler außerdem Apps erstellen, bei denen jeder Dienst unabhängig skaliert. Diese Kosteneffizienz ist der Hauptgrund, warum Unternehmen auf Serverless umgestiegen sind.

Die Kosteneffizienz hängt jedoch vom jeweiligen Anwendungsfall ab. Serverless ist für asynchrone oder leicht zu parallelisierende Aufgaben mit unvorhersehbaren Anforderungen zu empfehlen. Dies macht Serverless sehr attraktiv für neu eingeführte Dienste, insbesondere für kleinere Teams, die nicht über die Mittel verfügen, ihre eigene Infrastruktur zu verwalten. Andererseits ist es weniger relevant für größere Unternehmen, die die Entscheidung treffen können, in ihr eigenes System zu investieren (z. B. mit Kubernetes). Unternehmen sollten vorsichtig sein: Da Serverless-Produkte nach einem „Pay-as-you-go“-Modell abgerechnet werden, können die Kosten je nach Nutzung des Dienstes unvorhersehbar werden. Daher ist es wichtig, die Kosten überwachen zu können oder die Skalierbarkeit ihrer Funktionen zu begrenzen.

Fazit

Lohnt sich Serverless am Ende? Serverless ist mehr als nur ein Trend. Es verändert die Art und Weise, wie Anwendungen ausgeführt werden, und vereinfacht die Verwaltung der zugrunde liegenden Infrastruktur immens. Das hat andererseits auch seinen Preis: einem Drittanbieter die Hintergrundarbeit anvertrauen. Für Entwickler ist es wichtig, ihre potenziellen Anwendungsfälle sowie die Mittel und Bedürfnisse ihres Unternehmens zu berücksichtigen, um eine Entscheidung über Serverless-Services zu treffen. Wenn dieses Modell effektiv genutzt wird, ist es möglich, innovative Dienste zu erstellen, die seine Vorteile nutzen und ein Anwendungsdesign verwenden, das an seine Einschränkungen angepasst ist.

Lucas

Merdinian

Product Manager Serverless

Scaleway

Anzeige

Artikel zu diesem Thema

Weitere Artikel

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.