Was ist Serverless Computing?

Jetzt Artikel teilen:

Beim Serverless Computing managt der Cloud-Provider dynamisch die Zuteilung von Serverkapazitäten für den Kunden. Der Kunde lädt quasi nur seinen Softwarecode in die Cloud. Wir erklären, um was es geht.

Man geht ja davon aus, dass Entwickler sich den lieben langen Tag mit der Entwicklung ihrer Software befassen. Das ist jedoch in der Praxis mitnichten so. Denn einen Großteil ihrer Zeit verbringen sie damit, die Infrastruktur und Backend-Dienste korrekt aufzusetzen, die sie für die Laufzeit ihrer Anwendung benötigen. Deshalb ist Serverless Computing quasi der Traum vieler Entwickler. Denn sie können sich damit voll und ganz auf die Entwicklung ihrer Anwendungen fokussieren. Frei nach dem Motto „run code, not servers“. Über die Server, auf denen die Anwendungen am Ende laufen, müssen sich die Entwickler keine Gedanken mehr machen.

Serverless Computing on demand

Beim Serverless Computing lädt der Kunde ausschließlich seinen Programmcode in die Cloud. Er muss keine separate Konfiguration für die genutzten Cloud-Ressourcen erstellen. Der Cloud-Anbieter übernimmt die komplette Verwaltung und performante Bereitstellung der Anwendungen. Das umfasst die Serverinfrastruktur, -administration und Betriebssystemwartung. Aber auch die Skalierung und Bereitstellung aller benötigten Ressourcen wie weitere Laufzeitumgebungen, Netzwerk, Speicher und mehr.

Werden später nochmals zusätzliche Rechnerinstanzen benötigt, können diese flexibel und schnell on demand hinzugefügt werden. Die Umsetzung erfolgt automatisiert über die Cloud-basierten Backend-Dienste direkt beim Provider. Der Kunde muss dazu nichts weiter tun. Er kann sich somit voll und ganz auf die Entwicklung und Qualität seiner Software konzentrieren. Durch die Nutzung von Serverless Computing können neue Anwendungen also schneller entwickelt, getestet und vermarktet sowie Updates schneller bereitgestellt werden. Die Abrechnung der Services richtet sich nach dem tatsächlichen Ressourcen-Verbrauch der Anwendung. Der Kunde bezahlt also nur, wenn und solange der Code auch wirklich ausgeführt wird (pay per use).

Die Aufgaben von Serverless Computing im Vergleich zu IaaS und PaaS (Quelle: Crisp Research).

Funktionen sprechen Serverless

Damit diese automatisierte Bereitstellung von Software über den Serverless-Computing-Dienst des Providers gelingt, muss der Entwickler in seiner Anwendung bestimmte „Funktionen“ integrieren. Diese Funktionen sind Code, der beschreibt, wie die Anwendung auf ein bestimmtes vordefiniertes Ereignis reagieren soll. Je nachdem welcher Dienst genutzt wird, können diese Funktionen in den gängigen Programmiersprachen geschrieben werden. Hierzu zählen C#, Java, Node.js (JavaScript), PHP oder Python.

Lädt ein Shop-Betreiber beispielsweise für seinen Shop neue Bilder hoch, soll jedes Mal ein bestimmter Filter gesetzt werden. Oder der Betreiber möchte ein Miniaturbild des neuen Artikels in einer Produktübersicht abbilden. Diese Funktionen müssen in der Anwendung in Form von Code beschrieben werden. Dann kann der Dienst beim Provider diese vordefinierten Ereignisse automatisch auf den Servern ausführen. Zudem stellt er alle benötigten Infrastruktur-Ressourcen für die Datenverarbeitung bereit.

Herausforderungen von Serverless Computing

Bei der Umsetzung von Serverless Computing gilt es jedoch auch, einige Herausforderungen zu meistern. Allen voran beim Aufbau der Architektur der Anwendungen. Für Serverless Computing müssen Anwendungen aus funktionalen Einheiten bestehen. Ziel ist es, die Laufzeit dieser funktionalen Einheiten möglichst kurz zu gestalten, damit die Kommunikation zwischen Client und Server schnell geht. Denn der Serverless-Computing-Provider führt für jede Anfrage eine neue Instanz der funktionalen Einheit aus. Dies geschieht automatisch und skaliert ohne Codeänderungen an die aktuelle Lastsituation.

Bei zustandslosen (stateless) Anwendungen stellt die Abbildung der Logik in einzelne funktionale Einheiten kein Problem dar. Doch viele Anwendungen sind zustandsorientiert (stateful) aufgebaut. Sie müssen daher beispielsweise auf Daten aus Datenbanken zurückgreifen oder diese speichern. Der „State“ wird dann durch Datenbankdienste verwaltet. Dadurch kann sich eine Anwendung zum Beispiel einen Warenkorb merken. Beim Neuladen der Seite bleiben die Warenkorbeinträge erhalten.

Durch die zustandslose sowie zustandsbehaftete Nutzung funktionaler Einheiten verschiebt sich im Gegensatz zu klassischen Ansätzen mehr Workflow-Logik in den Client. Dies entspricht dem Trend zur Nutzung von Single Page Applications (SPA). Klassische Webanwendungen bestehen aus teils statischen, teils dynamischen HTML-Dokumenten, die serverseitig erzeugt werden. Bei SPAs – also Einzelseiten-Webanwendungen – hingegen werden die Inhalte dynamisch nachgeladen. Auch hier verlagert sich also immer mehr Logik weg vom Server hin zum Client. Um die funktionalen Einheiten in einem Serverless-Computing-Szenario abbilden zu können, muss die Architektur der Anwendung also entsprechend angepasst werden.

Andere Sicherheitskonzepte

Beim Serverless Computing gilt es auch, besondere Sicherheitskonzepte zu berücksichtigen. Bei klassischen Anwendungen ist es möglich, sich einmal über den Client auf dem Server anzumelden. Nach der Prüfung der Sicherheitsregeln ist der Nutzer angemeldet und für bestimmte Aktionen autorisiert. Das bleibt er solange, bis die Session beendet ist oder er sich ausgeloggt hat. Das ist bei einem möglichst „kleinteiligen“ Aufbau der Anwendung in möglichst zustandslose funktionale Einheiten anders. Hier muss jede der funktionalen Einheiten jeweils eine entsprechende Authentifizierung bzw. Autorisierung bei dafür zuständigen Diensten abfragen.

Ein API-Gateway kann die Überprüfung solcher Sicherheitsabfragen übernehmen. Es dient sozusagen als „Tür“ zwischen der Anwendung und dem Cloud-Backend. Das API-Gateway regelt also den Zugriff der Anwendung auf Daten, Geschäftslogik und Funktionen in der Cloud. Es nimmt zunächst den eingehenden Request des Clients entgegen. Dann übersetzt es den Request in ein für die funktionale Einheit verständliches und zu verarbeitendes Event. Dadurch ist das API-Gateway in der Lage, die entsprechende Funktion im Cloud-Backend aufzurufen und auszuführen.

Serverless-Architektur

Beispielhafte Darstellung der Serverless-Architektur eines Webshops.

Fazit

Serverless Computing ist nicht nur ein Hype, sondern bietet vor allem für Entwickler interessante Möglichkeiten. Unternehmen haben damit die Chance, schneller neue Anwendungen zu entwickeln und sich dabei komplett auf die Qualität ihrer Software zu konzentrierteren. Zudem sparen sie unmittelbar Kosten und sind wesentlich flexibler bei der Skalierung. Alle großen Cloud-Anbieter haben bereits erste Serverless-Computing-Dienste im Angebot. Dazu zählen unter anderem Microsoft Azure Functions, Google Cloud Functions sowie Amazon Lambda.

Klar ist jedoch auch, dass der Einsatz von Serverless Computing noch am Anfang steht. In den kommenden zwölf Monaten werden die Provider ihre Dienste weiter ausbauen und anpassen. Vor allem für die Ausführung zustandsorientierter Anwendungen in Serverless-Szenarien wird es weitere Lösungen geben. Angebote wie AWS Step Functions von Amazon oder Microsoft Azure Durable Functions sind erste Schritte in diese Richtung. Weitere Services werden folgen, die das Angebot kontinuierlich ausbauen.

Auf einen Blick: Vor- und Nachteile von Serverless Computing

Vorteile Nachteile
Keine hohen Investitionen in Serverkapazitäten, die später meist ungenutzt sind Deployment schwierig für das Aktualisieren von funktionalen Einheiten und deren Abhängigkeiten z.B. über den Client
Keine Serververwaltung mit all ihren Komplexitäten Debugging wird wesentlich schwieriger
Hohe Sicherheit durch regelmäßiges Patchmanagement Aufwendiges Logging & Monitoring
Flexible und automatische Skalierung auch bei Lastspitzen Abhängigkeit vom Cloud-Provider (Vendor Lock-in) (Amazon, Google, Microsoft)
Hohe Verfügbarkeit durch die dynamische Bereitstellung zusätzlicher Ressourcen im Bedarfsfall
Flexible Abrechnung nach tatsächlich ausgeführtem Code
Großer Zeitgewinn, der direkt für die Entwicklung bestehender und neuer Anwendungen eingesetzt werden kann

 

Serverless Computing in der Praxis

Sie möchten Serverless Computing nutzen, um von den Vorteilen zu profitieren? Lassen Sie sich bei PlusServer zu Ihrer optimalen Cloud-Lösung beraten.

Jetzt Artikel teilen:

Das könnte Sie auch interessieren