Definition „Serverless“ Was ist Serverless Computing?

Autor / Redakteur: Pyrocco / Stephan Augsten |

Serverless Computing ist ein Cloud-Computing-Modell, bei dem der Anbieter die Ressourcen für eine Anwendung dynamisch verwaltet. Der Entwickler benötigt kein näheres Wissen über das Backend. Abgerechnet wird nur die tatsächliche Ressourcennutzung.

Anbieter zum Thema

Serverless Computing dient der Vereinfachung der Anwendungsentwicklung und -bereitstellung in der Cloud.
Serverless Computing dient der Vereinfachung der Anwendungsentwicklung und -bereitstellung in der Cloud.
(Bild gemeinfrei: Lee Campbell / Pexels )

Serverless Computing dient der Vereinfachung der Anwendungsentwicklung und -bereitstellung in der Cloud. Skalierungs-, Kapazitätsplanungs- und Wartungsvorgänge der Infrastruktur, auf der eine Anwendung läuft, liegen in der Verantwortung des Cloud-Anbieters. Daher stellt sich die Entwicklung und der Betrieb aus Kundensicht quasi „serverlos“ dar, auch wenn im Backend weiterhin Server arbeiten. Der Entwickler kann sich so auf die Funktionalität der Anwendung konzentrieren.

Architektur: Function-as-a-Service

Bei Serverless Computing stellt sich das Backend der Anwendung als leichtgewichtige Funktionen dar. Jede davon führt eine eigene Aufgabe in der Anwendung aus und startet und stoppt auf Ereignisse (Events) hin. Entwickler müssen für Serverless Computing also Funktionen definieren, die für bestimmte Ereignisse aufgerufen werden.

Diese Architektur wird daher Function-as-a-Service (FaaS) genannt. Die einzelnen Serverless-Funktionen, die jeweils nur eine einzige fachliche Aufgabe erfüllen, lassen sich in der Regel klein und kompakt halten. Die Komplexität der Anwendung entsteht durch die Komposition. Updates können allein auf der Ebene der kleinen Funktionen durchgeführt werden.

Serverless-Komponenten auf Seiten des Providers

Eine Serverless-Architektur auf Providerseite umfasst die Bestandteile

  • Entgegennehmen und Sammeln von Events,
  • Strategie für die Speicher- und Prozessorzuteilung,
  • Rechen- und Netzwerkkapazität zur Bearbeitung der Events.

Vergleich mit bisherigen „As-a-Service“-Konzepten

Trotz des Begriffs „serverless“ beinhaltet das Konzept also weiterhin Server. Diese werden aber für den Anwender noch weiter abstrahiert als bei bisherigen „As-a-Service“-Diensten. Gegenüber den Konzepten Platform-as-a-Service und Backend-as-a-Service vereinfacht sich die Entwicklung.

Anwendungen können aus FaaS-Funktionen ohne Wissen über die Infrastruktur der Serverseite entwickelt werden. Der Entwickler und Anwendungsanbieter muss sich nicht um Server-Rechner, Netzwerkkonfigurationen, Firewalls, Installationen und Updates auf der Serverseite kümmern. Um die Skalierbarkeit müssen sich Entwickler daher ebenfalls nicht kümmern; dies ist die Aufgabe des Cloud-Providers.

Kosten nach tatsächlicher Ressourcennutzung

Serverless Computing wird nach genutzten Ressourcen abgerechnet und lässt sich damit dem Utility Computing zuordnen. Kunden zahlen nur für tatsächlich genutzte Speicher- und Rechenressourcen.

Im Vergleich zum Cloud-native Computing findet bei Serverless Computing eine effizientere Nutzung der Ressourcen statt. Beim Cloud-nativen Ansatz sind beständig Microservices in Containern aktiv. Serverless-Funktionen werden dagegen erst bei Erfordernis durch Events ausgelöst. Container sind zudem nicht automatisch skalierbar.

Vorteile

  • Geringere Kosten: Serverless Computing ist im Allgemeinen sehr kosteneffektiv, da bei herkömmlichen Backend-Diensten der Kunde auch für nicht genutzten Speicherplatz und nicht genutzte CPU-Zeit bezahlt.
  • Vereinfachte Skalierbarkeit: Entwickler, die eine Serverless-Architektur verwenden, müssen sich keine Gedanken zur Skalierung ihres Codes machen. Der Serverless-Computing-Anbieter übernimmt die gesamte Skalierung.
  • Vereinfachter Backend-Code: Mit FaaS können Entwickler Anwendungen aus einfachen Funktionen erstellen nach dem Vorbild von Microservices, die unabhängig voneinander einen einzigen Zweck erfüllen.
  • Vereinfachte Wartung: Updates können wie bei Microservices unterbrechungslos eingeführt werden. Es muss keine Anwendung als Ganzes neu verteilt werden. Updates erfolgen durch neue Versionen der leichtgewichtigen Funktionen, aus denen sich Serverless-Computing-Anwendungen zusammensetzen.
  • Schnellere Abwicklung: Serverless Computing kann die Markteinführungszeit von Software erheblich verkürzen. Es entfällt die Aufgabe, die Software auf ein spezifisches Backend abzustimmen, dieses zu verwalten und die Skalierbarkeit einzubeziehen.

Nachteile

  • Debugging: Bei Debugging und Monitoring müssen Entwickler mit Einschränkungen rechnen. Da sie zur Vereinfachung vom Wissen über die Serverseite entbunden sind, haben sie auch kaum Einblicke in die Backend-Prozesse. Tiefere Analysen mit Debuggern und Performance Management-Tools sind meist nicht möglich. In den Plattformen der großen Anbieter ist einfaches Debugging integriert, das aber hinter den Möglichkeiten heutiger Entwicklertools zurückbleibt. In lokalen Testumgebungen lassen sich proprietäre Umgebungen des Providers nicht genau nachbilden.
  • Performance: Da sich die Ressourcen automatisch dem Bedarf anpassen, werden Funktionen erst bei Bedarf gestartet. Dieser (Neu-)Start kann Geschwindigkeitsnachteile bringen.
  • Vendor-Lock-In: Um sich nicht nur auf die Infrastruktur eines einzelnen Prodviders hin zu entwickeln, gibt es Frameworks wie beispielsweise das Node.js-basierte Serverless Framework. Dieses bietet Unterstützung für Amazon AWS, Apache OpenWhisk, Microsoft Azure und Google Cloud Functions.

Fazit

Unter Beachtung der Nachteile können Unternehmen mit Serverless Computing von der schnellen Bereitstellung und Skalierung und der nutzungsabhängigen Abrechnung profitieren.

(ID:46197303)