Definition Was ist Serverless Computing?

Serverless Computing ist eine Form des Cloud Computings. Sie ermöglicht es, Anwendungen zu realisieren und auszuführen, ohne sich mit der zugrundeliegenden Server-Infrastruktur, den Netzwerkverbindungen oder dem Storage beschäftigen zu müssen. In der Regel basiert serverloses Computing auf Function as a Service (FaaS). Die Anwendungen setzen sich aus einzelnen Funktionen zusammen, die in ihrer Gesamtheit die Prozesslogik bilden.

Die wichtigsten IT-Fachbegriffe verständlich erklärt.
Die wichtigsten IT-Fachbegriffe verständlich erklärt.
(Bild: © aga7ta - stock.adobe.com)

Serverless Computing ist ein Begriff aus dem Umfeld des Cloud Computings. Es handelt sich um eine besondere Form des Cloud Computings. Sie wird in Analogie zu den Cloud-Computing-Servicemodellen Infrastructure as a Service (IaaS), Plattform as a Service (PaaS) und Software as a Service (SaaS) oft als Function as a Service (FaaS) bezeichnet.

Mit dem Serverless Computing lassen sich Anwendungen erstellen und betreiben, ohne sich konkret um die zugrundeliegende Infrastruktur bestehend aus Servern, Netzwerkverbindungen und Storage kümmern zu müssen. Der Cloud Provider stellt die Umgebung zur Ausführung der benötigten Funktionen bereit und sorgt für deren Skalierung und Verfügbarkeit. Aus Anwendersicht handelt es sich um dynamische Laufzeitumgebungen, in denen die Funktionen angesprochen und ausgeführt werden. Die Funktionen liefern Ergebnisse zurück, die wiederum die Ausführung weiterer Funktionen veranlassen können.

Da die Funktionen Event-gesteuert aufgerufen und ausgeführt werden, verwendet man für Serverless Computing teilweise die Bezeichnung Event-driven Computing. Aus der Gesamtheit der einzelnen Funktionen entsteht die Prozesslogik der Anwendung. Die einzelnen Funktionen an sich sind zustandslos. Sind zustandsbehaftete Vorgänge abzubilden oder Daten dauerhaft zu speichern, müssen Dateisysteme oder Datenbankservices eingebunden werden.

Die Abrechnung des Serverless Computings erfolgt auf Basis der ausgeführten Funktionen nutzungsabhängig und sekundengenau. Nicht genutzte Funktionen verursachen keine Kosten. Für Anwendungsfälle wie das Edge Computing lassen sich die Funktionen des Serverless Computings dezentral oder On-Premises bereitstellen. Serverless Computing wird von zahlreichen großen und kleinen Cloud Providern angeboten. Zu den bekanntesten Services zählen die Azure Functions von Microsoft, AWS Lambda von Amazon, Cloud Functions von Google und die Cloud Functions von IBM.

Die typischen Merkmale des Serverless Computings

Kurz zusammengefasst sind die wichtigsten Merkmale des Serverless Computings folgende:

  • der Cloud-Anbieter managt die komplette IT-Infrastruktur und stellt dynamische Laufzeitumgebungen zur Ausführung einzelner Funktionen bereit
  • die einzelnen Funktionen bilden in sich geschlossene Einheiten
  • die einzelnen Funktionen arbeiten Event-gesteuert und sind zustandslos
  • die Abrechnung der Leistungen erfolgt nutzungsbasiert und sekundengenau
  • die Logik einer serverlosen Anwendung setzt sich aus der Gesamtheit der einzelnen Funktionen und ihrer Verknüpfungen zusammen
  • für zustandsbehaftete Anwendungen und die persistente Speicherung von Daten sind Datenbankservices oder Dateisysteme notwendig

Funktionsprinzip des Serverless Computings

Serverless Computing stellt dynamische Laufzeitumgebungen zur Ausführung in sich geschlossener Funktionen bereit. Zur Realisierung einer Anwendung sind die einzelnen Funktionen zu definieren und in die Cloud zu laden. Jede Funktion führt eine ihr zugewiesene Aufgabe aus und liefert ein bestimmtes Ergebnis zurück. Ausgelöst wird der Funktionsaufruf durch ein Ereignis (Event). Das Ergebnis einer Funktion kann ein Ereignis auslösen und den Start einer weiteren Funktion triggern. Durch das Zusammenspiel der einzelnen Funktionen entsteht die Prozesslogik der Anwendung.

Je nach Cloud Service repräsentiert ein bestimmter Programm-Code oder ein Skript die Funktion. Entwickler oder Provider entwerfen die Funktionen in Programmier- oder Skriptsprachen wie Java, C#, PHP oder Python. Dieser Code wird dem Anbieter des Serverless Computings als Funktion übergeben oder der Anbieter implementiert selbst erstellte Funktionen. Er sorgt dafür, dass die Funktionen verfügbar und aufrufbar sind. Zudem skaliert er die zugrundeliegende IT-Infrastruktur, um immer genügend Ressourcen für die Ausführung der Funktionen bereitzustellen. Der Anwender oder Programmierer muss sich keine Gedanken um die Server-Umgebung machen. Die Funktionen skalieren mit steigender Last automatisch. Eine nicht aufgerufene Funktion verursacht dem Kunden des Anbieters keine Kosten.

Abgrenzung zwischen Serverless Computing und Platform as a Service (PaaS)

Aus Sicht eines Anwenders oder Entwicklers stellt auch der Cloud-Computing-Dienst Platform as a Service (PaaS) eine serverlose Umgebung zur Verfügung. Nutzer des Dienstes müssen sich nicht um die zugrundeliegende Server-Infrastruktur kümmern. Dennoch lässt sich PaaS und Serverless Computing deutlich voneinander abgrenzen.

PaaS liefert eine statische Arbeitsumgebung, die verschiedene Prozesse und Funktionen über die komplette Laufzeit bedient. Während das Serverless Computing sich auf die Bereitstellung einzelner, in sich geschlossener Funktionen konzentriert, die dynamisch bei Bedarf ausgeführt werden, realisiert PaaS eine vollständige, Cloud-basierte Entwicklungs- oder Anwendungsumgebung. Dementsprechend wird Serverless Computing nach den Ausführungszeiten der Funktionen und PaaS prozessabhängig abgerechnet.

Vor- und Nachteile des Serverless Computings

Gegenüber der Ausführung klassischer monolithischer Anwendungen auf On-Premises-Infrastruktur oder in Cloud-Modellen wie IaaS, PaaS oder SaaS bietet Serverless Computing einige Vorteile. Programmierer und Entwickler können sich voll auf das Schreiben des Codes und die Bereitstellung bestimmter Funktionen konzentrieren, ohne sich um die zugrundeliegenden Server, Server-Betriebssysteme, Netzwerkverbindungen oder Storage-Systeme zu kümmern. Der Anbieter sorgt für die Verfügbarkeit und Skalierung der benötigten Ressourcen. Mit steigender oder sinkender Last skalieren die Ressourcen automatisch.

Das Lastverhalten einzelner Funktionen kann stark schwanken. Bezahlt wird nur für tatsächliche Funktionsaufrufe. Ein Overprovisioning ist aus Sicht des Anwenders nicht notwendig. Nicht genutzte Funktionen verursachen keine Kosten. Die einzelnen Funktionen bilden abgeschlossene Einheiten. Sie sind einfach zu debuggen, zu managen, upzudaten oder zu ersetzen. Für Anwendungsfälle wie das Edge Computing lassen sich die Funktionen des Serverless Computings dezentral oder On-Premises bereitstellen. Da keine spezifisch auf einzelne Server abgestimmte Software geliefert werden muss, verkürzt sich die Entwicklungszeit für neue Anwendungen.

Als Nachteile des Serverless Computings lassen sich aufführen:

  • dynamisch bereitgestellte Laufzeitumgebungen, die unter Umständen erst bei einem Funktionsaufruf gestartet werden, verursachen Verzögerungen und erzielen geringere Performance als durchgängig laufender Code
  • Debugging nur auf Funktionsebene – tiefergehende Analysen sind kaum möglich, da kein Zugriff auf Server- oder Betriebssystemebene möglich ist
  • durch die Nutzung anbieterspezifischer oder proprietärer Dienste, Schnittstellen und Funktionen kann eine Abhängigkeit von einem einzelnen Cloud Provider entstehen, was die Migration von Anwendungen erschwert
  • hoher Aufwand bei der Migration von einer klassisch-monolitischen Anwendung auf eine serverlos arbeitende Anwendung
  • High Performance Computing mit Serverless Computing kaum realisierbar

(ID:46832116)

Über den Autor