Serverless Computing: Das steckt hinter dem modernen Cloud-Modell
Nicht nur im privaten Sektor, sondern insbesondere auch im geschäftlichen Bereich verlagert sich das digitale Treiben zunehmend in die Cloud. Diverse Anbieter schicken interessante und vielversprechende Service-Lösungen ins Rennen, wobei eine Beschreibung und Unterscheidung der verschiedenen Angebote häufig gar nicht so einfach ist. Das gilt zum Beispiel auch für die Einstufung des noch sehr jungen, sogenannten Serverless Computings, das in Fachkreisen auch als Function-as-a-Service (FaaS) bezeichnet wird. Auch wenn der Name anderes vermuten ließe, handelt es sich dabei nämlich keineswegs um Cloud-Strukturen ohne Server. Im Folgenden werden wir die Technologie genauer beleuchten.
- Kostengünstige vCPUs und leistungsstarke dedizierte Cores
- Höchste Flexibilität ohne Mindestvertragslaufzeit
- Inklusive 24/7 Experten-Support
Was verbirgt sich hinter dem Serverless-Konzept?
Als Serverless Computing oder Serverless Architecture bezeichnet man ein Cloud-Modell, das es Nutzern ermöglicht, Anwendungen bzw. Prozesse zu erstellen und auszuführen, ohne dabei mit dem zugrundeliegenden Server in Kontakt zu kommen. Anders als es der Name also suggeriert, verfügt auch eine derartige Cloud-Umgebung über Server – allerdings fallen Bereitstellung, Skalierung und Management ausschließlich in den Aufgabenbereich des Providers. Damit geht der Serverless-Ansatz noch einen Schritt weiter als das Platform-as-a-Service-Modell (PaaS), bei dem Entwickler bzw. Kunden nicht darum herumkommen, den bzw. die Server über eine API anzusprechen und Ressourcen auf eigene Faust aufzustocken bzw. freizugeben.
Da diese administrativen Aufgaben bei Projekten in einer Serverless-Computing-Infrastruktur wegfallen, kann mit ihr der Fokus gänzlich auf die Entwicklung und Ausführung der jeweiligen Software gerichtet werden. Damit dies möglich ist, gilt es allerdings, neben dem eigentlichen Programmcode auch zustandslose Funktionen zu erstellen, die Anweisungen dazu enthalten, wie ein Programm auf bestimmte Ereignisse reagieren soll. Der jeweilige Programmcode lässt sich dann inklusive der gewünschten Funktionen (die dank ihrer Zustandslosigkeit keinerlei Infrastruktur-Abhängigkeiten aufweisen) jederzeit in die Cloud-Umgebung hochladen und dort ausführen. Aufgrund der elementaren Rolle der Funktionen bieten einige Provider ihren Serverless-Dienst auch unter dem Namen „Function-as-a-Service (FaaS)“ an.
Serverless-Computing-Anbieter tragen nicht nur die Verantwortung dafür, dass stets die erforderlichen Server-Ressourcen zur Verfügung stehen, sondern auch dafür, dass sich die höchstmögliche Ausfallsicherheit garantieren lässt. Die Abrechnung erfolgt üblicherweise nach dem Pay-per-Use-Modell, sodass Kunden nur für tatsächlich genutzte Leistung zur Kasse gebeten werden.
Wie funktioniert Serverless Computing?
Wesentlich für eine Serverless Architecture ist das Management der Hardware durch den Provider: Für Nutzer besteht die Herausforderung lediglich darin, ihre Software bzw. deren Logik inklusive passender Funktionen in die gemieteten Cloud-Strukturen einzubinden. Der Aufruf dieser Funktionen funktioniert entweder …
- asynchron über Events
- oder synchron nach dem klassischen Client-Server-Modell.
Erstgenannte Variante bietet den Vorteil, eine zu starke Kopplung der einzelnen Funktionen zu verhindern und den Ressourcenbedarf zur Laufzeit gering zu halten. Eine mögliche eventbasierte Funktion wäre zum Beispiel, dass beim Upload eines Bildes immer automatisch auch ein Miniaturbild erzeugt werden soll. Bei der klassischen Variante muss der Client immer eine gesonderte Anfrage an den Server schicken, um eine entsprechende Funktion für die Kreation der Miniaturansicht aufzurufen.
Anders als bei einer Platform-as-a-Service-Infrastruktur stellt der Serverless-Computing-Provider zu diesem Zweck keine langlebige Arbeitsumgebung für die gesamte Laufzeit zur Verfügung, sondern liefert punktuell und in Echtzeit die Ressourcen, die für die Ausführungszeit eines einzelnen Funktionsaufrufs benötigt werden. Im Hintergrund (aber eben vom Nutzer unbemerkt) sind aber natürlich auch bei Serverless-Diensten physikalische und virtuelle Server im Einsatz, um die Ausführung der Funktionen zu ermöglichen.
Serverless Architecture: Vorteile und Nachteile im Überblick
Klassische Cloud-Infrastrukturen ermöglichen Nutzern zwar bereits, benötigte Hardware auszulagern, sie erfordern häufig aber dennoch eine Menge Administrationsaufwand und Mikromanagement. Serverless Computing soll diesen Aufwand auf ein Minimum reduzieren.
Weitere Vorzüge sowie die grundsätzlichen Schwächen des Serverless-Konzepts fasst die folgende Tabelle zusammen:
Serverless Computing – Vorteile | Serverless Computing – Nachteile |
---|---|
Skalierung und Verwaltung der benötigten Ressourcen durch den Provider | Zugriff auf virtuelle Maschinen, Betriebssystem oder Laufzeitumgebungen bleibt verwehrt |
Schnelle Bereitstellung der Ressourcen in Echtzeit, auch bei unvorhersehbaren Lastspitzen und überproportionalem Wachstum | Implementierung von Serverless-Strukturen ist sehr aufwändig |
Kosten werden ausschließlich für genutzte Ressourcen berechnet | Hohe Abhängigkeit vom Provider („Lock-in-Effekt“) – bei einem Anbieterwechsel müssen beispielsweise meist sämtliche eventbasierten Funktionen neu geschrieben werden |
Hohe Fehlertoleranz dank flexibler Hardware-Infrastruktur in den Rechenzentren des Providers | Verhältnismäßig komplizierter Monitoring- und Debugging-Prozess, da tiefgreifende Analysen von Performance und Fehlern in der Regel nicht möglich sind |
Serverless Computing in der Praxis: Wo kommt das Serverless-Prinzip zum Einsatz?
Serverless Computing ist allen voran für den kurzlebigen Datenaustausch von Web- und Business-Anwendungen in der Cloud konzipiert. Es geht in der Praxis also nicht darum, ganze Anwendungen oder umfangreiche Code-Sequenzen (hierfür ist Serverless Architecture grundsätzlich auch gar nicht geeignet), sondern einzelne Funktionen beliebiger Anzahl zu verarbeiten. Das macht den Ansatz für mehrere Szenarien interessant, wie die folgende Auflistung zeigt:
- API-Proxy: Viele ältere Business-Anwendungen haben komplexe, schwerfällige APIs (Software-Schnittstellen). Mithilfe von Serverless Architecture und dem passenden API-Gateway lässt sich eine alternative Abstraktionsschicht erzeugen, um diese Anwendungen über ein einfaches REST-API ansprechbar und so für andere Systeme leichter zugänglich zu machen.
- Serverless Backend: Immer häufiger wird Serverless Computing auch dazu verwendet, das komplette Backend einer Anwendung in der Cloud zu konstruieren und zu betreiben. Für ein solches Szenario ist auch der Name Backend-as-a-Service (BaaS) gebräuchlich.
- Weiterverarbeitung (un)strukturierter Daten: Big Data sind aus dem modernen Business-Umfeld nicht mehr wegzudenken. Serverless-Infrastruktur erweist sich hier als mächtiger Verbündeter, wenn es darum geht, derartige Informationen weiterzuverarbeiten – also strukturierte Daten (JSON, XML etc.) oder unstrukturierte Daten (Bilder, Audio etc.) unter anderem zu transkodieren, zu verschieben, zu kombinieren oder zu manipulieren.
- Ausführung von Aufgaben nach Zeitplan: Funktionen lassen sich in den meisten Fällen nicht nur eventbasiert, sondern auch nach einem definierten Zeitplan ausführen. Auf diese Weise lassen sich beispielsweise automatisiert Datenbanken aufräumen oder Backups anlegen.
- Implementierung von Sprachassistenten und Chat-Bots: Die Serverless-Technologie eignet sich auch hervorragend zur Einbindung von digitalen Sprachassistenten und Chat-Bots.