Serverless Computing

Immer häufiger begegnet uns der Begriff „Serverless Computing“ – einfach nur ein Begriff oder der neue IT-Trend für 2019? Was genau hinter dem Begriff steckt und welche Einsatzszenarien möglich und denkbar sind, möchten wir dir in unserem Beitrag näher erläutern.

Was steckt hinter Serverless Computing?

Durch das Serverless Computing haben Entwickler die Möglichkeit, Services oder Anwendungen in der Cloud auszuführen, ohne dass sie sich selbst um die Skalierung, Bereitstellung und das Management der Server kümmern. Die bereitgestellten Produkte werden auch als „Function as a Service“ (FaaS) oder als „Event-Diven“ bezeichnet. Dabei handelt es sich um kurzlebige Leistungsumgebungen, die von dem jeweiligen Provider auf dynamische Weise zugewiesen und skaliert werden. Anbieter für das Serverless Computing sind unter anderem:

Auch wenn der Name eine andere Aussage vermittelt, auch Serverless Computing kommt nicht ohne Server aus. Nur werden diese aus Sicht des Anwenders abstrahiert als dies bei der Platform as a Service (PaaS) der Fall wäre. Dadurch entfällt für den Entwickler die Bedingung, zusätzliche Ressourcen freizugeben oder mit der API dieser Plattform zu kommunizieren.

Das bedeutet also für die Nutzer des Serverless Computing, dass sie sich nicht damit befassen müssen, wie der Server aufgesetzt, skaliert oder provisioniert werden. Vielmehr trägt der Serviceanbieter dafür Sorge, dass ausreichend Ressourcen für die Anwendungen zur Verfügung stehen.

Die Abrechnung erfolgt nach den tatsächlich verwendeten Speicher- und Rechner-Ressourcen. Nutzer müssen nicht wie bei anderen Systemen für die ungenutzten Ressourcen oder die überbuchten Ressourcen aufkommen.

Damit die Programme für Serverless Computing umgesetzt werden können, müssen die Entwickler nicht nur den Code in die Cloud laden, sondern auch Funktionen definieren, die beispielsweise festlegen, wie auf ein bestimmtes Ereignis reagiert werden soll. Die Funktion beinhaltet demnach Anweisungen, wie zum Beispiel ein Programm auf bestimmte Ereignisse reagieren soll.

Serverless-Computing Funktionen sind zustandslos.

Die Vor- und Nachteile des Serverless Computing

Als einen eklatanten Vorteil ist die Abrechnung nach dem Bedarf zu nennen. Durch den vereinfachten Betrieb können sich Entwickler auf ihre Kernkompetenzen konzentrieren. Als weitere Vorteile sind die Fehlertoleranz und die automatische Skalierung und das Kapazitätsmanagement, die schnelle Bereitstellung der Ressourcen und die Flexibilität der Ressourcenverwaltung. Zudem können sich die Entwickler auf den Kern des Programmcodes konzentrieren.

Als möglicher Nachteil dieser Lösungen ist die Performance zu nennen. Die „serverlos“ bereitgestellten Ressourcen auf den Containern oder virtuellen Maschinen können unter Umständen heruntergefahren und erst bei Bedarf initialisiert werden. Dies kann unter Umständen zu unerwünschten und zusätzlichen Verzögerungen führen. Hinzu kommt, dass sich Serverless Computing nicht für alle Arten von Anwendungsfällen eignet. Bei High-Performance Computing ist es oftmals effizienter und kostengünstiger, die notwendigen Server selbst aufzusetzen.

Und auch bei Debugging und Monitoring müssen die Anwender mit gewissen Einschränkungen rechnen. Tiefergehende Analysen mi Debuggern, Profilern und Werkzeugen für APM (Application Performance Management) sind in Verbindung mit Serverless Computing nicht möglich. Setzen zudem Provider auf proprietäre Umgebungen, können diese kaum auf lokalen Infrastrukturen zum Testen repliziert werden.

Für Kontrollfreaks ist das Serverless Computing eher ungeeignet. Während auf der einen Siete das Kapazitätsmanagement und die automatische Skalierung durch Serverless-Computing-Dienst übernommen werden, muss auf der anderen Seite der Anwender mit den Einschränkungen der Nutzerfreiheiten leben. Ein Zugriff auf die virtuellen Maschinen oder das Ändern der Laufzeitumgebung ist nicht mehr möglich.

Wiegt man die Vorteile des Serverless Computing gegen die Nachteile auf, stehen dem Kontrollverlust doch mehr Vorteile gegenüber. Diese möchten wir nochmals kurz zusammenfassen:

  • Die Abrechnung der Kosten erfolgt über die genutzten Ressourcen
  • Verwaltung der Kapazitäten und automatische Skalierung
  • Schnelle Bereitstellung neuer Ressourcen zu dem Zeitpunkt, wenn sie benötigt werden
  • Im Vordergrund steht der Sourcecode und die Cloud-Plattform übernimmt die Verwaltung der Server-Infrastruktur

Der letzte Punkt lässt zu, dass sich die Entwickler vollends sich auf ihre Anwendungsentwicklung konzentrieren können. Dadurch könnte der Beruf des Server-Admins oder Berufe in dem IT-Bereich in den Unternehmen wegfallen. Allerdings würden diese Berufe dann bei den Cloud-Anbietern mehr zum Tragen kommen.

Die verschiedenen Einsatzszenarien des Serverless Computing

Fakt ist, dass geschäftskritische und komplexe Anwendungen, die auf traditionelle Architekturen setzen, eignen sich für Serverless-Computing-Szenarien eher nicht eignen. Auch statische Workloads, bei denen das Anfragevolumen absehbar ist, sind ebenfalls für das Serverless-Computing nicht geeignet.

Für die Anfänge des Serverless Computing empfiehlt es sich, erst einmal unkritische Projekte auszuwählen.

Serverless Computing – Bestandteil der Zukunft?

Für den Wechsel der Plattform müssten die eventbasierten Funktionen implementiert werden. Setzt man die Kosten und den Aufwand für einen möglichen Umzug mit dem Nutzen des Serverless Computing ins Verhältnis, spricht nichts gegen die Verwendung dieses Computing. Zudem lässt sich dieser Teil durch ein Framework abstrahieren, was den Umzug immens erleichtert. Dieses Framework unterstützt die gängigen Cloud-Plattformen wie Microsoft Azure, AWS und die Google Cloud Platform.

Fazit

Bei dem Serverless Computing verschwinden die traditionellen Konzepte wie Laufzeitumgebungen oder Anwendungsserver. Dabei wird das Serverless Computing eine zusätzliche Abstraktionsschicht bei der Entwicklung von Backen-Systemen darstellen. Letztendlich bedeutet dies für die Unternehmen, dass die umfangreiche Administration der vorhandenen Server-Infrastruktur, eingespart werden kann. Das hat zur Folge, dass die Unternehmen Geld sparen. Und durch das Pricing, dass nur dann gezahlt wird, wenn der Code ausgeführt wird, sparen Unternehmen ebenfalls einige Euro ein. Hinzu kommt die Zeitersparnis der Entwickler, da sie sich vollends auf ihre Arbeit konzentrieren können.