Run code, not servers:

Was ist Serverless Computing?

| Autor / Redakteur: Otto Geißler / Ulrike Ostler

Mit Serverless Computing wird ein Traum vieler Backend-Entwickler wahr: Softwareprogrammierung ohne sich mehr Gedanken über Server machen zu müssen.
Mit Serverless Computing wird ein Traum vieler Backend-Entwickler wahr: Softwareprogrammierung ohne sich mehr Gedanken über Server machen zu müssen. (Bild: © djama - stock.adob.com)

Das Serverless Computing (auch: Serverless Infrastructure) beschreibt die dynamische Zuteilung von Server-Kapazitäten eines Cloud-Providers an seine Kunden. Hierfür lädt der Kunde im Prinzip nur seinen Softwarecode in die Cloud - woimmer die sich auch befindet.

Haben Server mit dem Serverless Computing nun völlig ausgedient? Mitnichten. Das Rätsel ist schnell gelöst: Die Geschäftsidee führt zu einer neuen Aufteilung von Cloud-Stacks. Auf den Einsatz von Servern kann dabei natürlich nicht verzichtet werden. Denn diese tun im Hintergrund als physikalischer Host oder virtuelle Ressource weiterhin brav ihre Dienste. Wo läuft sonst Compute Power, Memory und die Logik des Programmcodes?

Wo steckt der Clou?

Ganz einfach: Entwickler müssen sich dank Abstraktion mehr mehr direkt mit Servern - Hardware oder virtuell - auseinandersetzen. Serverless Computing heißt: die physikalischen Ressourcen vergessen. Das Ansteuern und Nutzen, auch das verwalten übernimmt stattdessen der Cloud-Service eines Anbieters als eine Art „Blackbox“. Raffiniert, werden manche sagen! Obwohl nicht wenige glauben, Entwickler haben damit im Grunde gar nichts zu tun und sinnieren sowieso nur über ihren Programmen. Weit gefehlt!

Entwickler „verplempern“ relativ viel Zeit mit dem sauberen Aufsetzen von Infrastruktur und Backend-Diensten. So steht bei vielen Entwicklern Serverless Computing ziemlich weit oben auf ihrer langen Wunschliste. Denn erst damit können sie sich – frei nach dem Motto „run code, not servers“ - voll und ganz auf die Entwicklung ihrer Anwendungen konzentrieren. Und die Sever landen für sie auf dem Altenteil …

Alles nur (ge)Cloud?

Für den Entwickler läuft Serverless Computing folgendermaßen ab: Er lädt seinen Code hoch und der Cloud-Service-Anbieter übernimmt die komplette Administration der dafür erforderlichen Server-Infrastruktur inklusive der Server- und Betriebssystemwartung - ach ja, und selbstverständlich auch die Skalierung und Bereitstellung aller notwendigen Ressourcen wie zum Beispiel weitere Laufzeitumgebungen, Netzwerk, Speicher und vieles mehr. Sollten in naher oder ferner Zukunft weitere Rechnerinstanzen benötigt werden, lassen diese sich jederzeit beordern, on demand, versteht sich.

Die Implementierung läuft dann per Ansage vollautomatisch beim Anbieter über die Cloud-basierten Backend-Dienste. Hierbei sticht ein ganz großer Vorteil des Serverless Computing ganz klar heraus: Neue Software kann damit viel schneller entwickelt, getestet und vermarktet werden. Sogar Updates lassen sich auf diese Weise schneller bereitstellen.

Und vor allem: Der Kunde bezahlt nur das, was er wirklich im Einsatz hält (pay per use). So ist das Pricing noch flexibler als bei den IaaS- und PaaS-Angeboten. Denn der Kunde bezahlt nur dann, wenn der Code tatsächlich ausgeführt wird.

Ein neues Déjà-vu?

Auf den ersten Blick klingt das Serverless Computing wie der altbekannte Platform-as-a-Service (PaaS). Neuer Wein in alten Schläuchen? Sieht man genauer hin, so treten durchaus deutliche Unterschiede hervor. Bei PaaS muss der Programmierer zum Beispiel innerhalb seines Codes mit den API des PaaS interagieren, um die gewünschte Skalierbarkeit und Ausfallsicherheit der Anwendung zu gewährleisten.

Das heißt: Entwickler müssen nach wie vor mit der Plattform kommunizieren. Bei einem Serverless Computing übernimmt dies vollständig die „Blackbox“ in Form eines Cloud-Service-Angebots und stellt zu jeder Zeit sicher, dass die Anwendung stets ausreichend Ressourcen zur Verfügung erhält, um optimal Anfragen zu bedienen.

Neben dem Hochladen des Programmcodes muss der Entwickler nur noch so genannte „Funktionen“ schreiben. Solche Funktionen sehen vor, dass zum Beispiel beim Uploading eines Bildes automatisch Filter angewandt werden. Auf diese Weise können die vom Service-Provider angebotenen Microservices oder Platform-Dienste angesprochen oder eigene Diente integriert werden. Deshalb nennt man das Serverless Computing nicht selten auch „Event-Driven“.

Vor- und Nachteile auf einen Blick

Zu den Vorteilen von Serverless Computing zählen

  • die geringen Kosten für Investitionen in Server-Kapazitäten. Im Gegensatz zu den sonst eigens bereitgestellten Ressourcen, die später nur zum Teil genutzt werden.
  • Eine Server-Verwaltung fällt mit all ihrer Komplexität weg.
  • Hohe Sicherheit durch regelmäßiges Patch-Management.
  • Flexible und automatische Skalierung bei Lastspitzen.
  • Hohe Verfügbarkeit durch die flexible Bereitstellung weiterer Ressourcen on demand.
  • Flexible Abrechnung nach tatsächlich ausgeführtem Code.
  • Deutlicher Zeitvorteil, der für die Entwicklung bestehender und neuer Anwendungen genutzt werden kann.

Zu den Nachteilen gehören

  • Schwierigkeiten in Zusammenhang mit dem Aktualisieren von funktionalen Einheiten und dem Debugging.
  • Abhängigkeiten vom Service-Provider.
  • Aufwendiges Monitoring.
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45318919 / Definitionen)