Unsere Welt wird immer komplexer - gerade im technischen Bereich ist der Fortschritt immens und fachliche Kompetenzen werden spezifischer. Daher erlebt der „Everything-as-a-Service“ Trend an Aufschwung – der zentrale Begriff: Outsourcing. So werden beispielsweise im IT-Bereich Cloud-Computing Dienste gefragter – darunter auch Funktion-as-a-Service (FaaS) – eine serverlose Architekturtechnologie.
Auch wenn der Name es vermuten lässt, bedeutet serverless Architektur nicht, dass es keinen Server gibt – den braucht es nach wie vor – doch die Art und Weise, wie er verwaltet und genutzt wird, hat sich geändert.
Merkmale einer serverless Architektur
Outsourcing der Infrastruktur
Ein externer Anbieter verwaltet die Server-Infrastruktur, einschließlich der Bereitstellung, und Wartung. Der Kunde muss sich diesbezüglich um nichts kümmern.
Ereignisgesteuert
FaaS ist Event-gesteuert – das heißt, dass Funktionen durch gewisse Ereignisse ausgelöst werden. Diese Ereignisse können unter anderem HTTP-Anfragen, Datenbankänderungen oder Dateiuploads sein. Sobald ein Ereignis auftritt, wird die entsprechende Funktion automatisch ausgeführt.
Automatische & dynamische Skalierung
Die serverlose Architektur skaliert automatisch je nach Arbeitslast. Wenn viele Anfragen gestellt werden, werden mehr Serverressourcen bereitgestellt. Werden keine Anfragen gestellt werden, wird die Skalierung zurückgefahren – es gibt für diese Anwendung dann keinen laufenden Server.
Kostenmodell
Diese dynamische Funktionsweise spiegelt sich auch in der Preisgestaltung wieder. Statt für eine bestimmte Menge an Speicherplatz auf einem Server zu zahlen, wird bei der serverlosen Architektur nur für die tatsächliche Ausführungszeit der Funktionen gezahlt. So entstehen nur Kosten, wenn die Anwendung auch aktiv genutzt wird.
Kurze Ausführungszeiten
Funktionen in einer serverlosen Architektur sind oft darauf ausgelegt, nur kurze Aufgaben auszuführen und haben zeitliche Begrenzungen (z. B. 5 bis 15 Minuten). Für länger laufende Aufgaben oder komplexe Workflows müssen zusätzliche Dienste wie Task Queues oder Orchestrierungslösungen verwendet werden.
Abgrenzung zu Cloud Computing
Vorteile:
-
Sprachenunabhängig: Als sogenannte polyglotte Umgebung ermöglicht die serverless Architektur eine sprachenunabhängige Entwicklung. So können Entwickler in der Sprache arbeiten, mit der sie vertraut sind.
-
Pay-as-you-go: Der Zähler läuft nur, solang ein Befehl ausgeführt bzw. eine Anfrage verarbeitet wird. Für saisonal bzw. tageszeit-abhängige Zugriffs-Spitzen eignet sich die Verwendung der serverless Architekturtechnologie.
-
Konzentration auf das Wesentliche: Webentwickler können sich auf die reine Entwicklungsarbeit konzentrieren und müssen sich nebenbei nicht noch um die Verwaltung des Servers kümmern.
Nachteile:
-
Abhängigkeit: Während die serverlose Architektur sprachenunabhängig ist, verwendet jedoch jeder Anbieter eigene Funktionen und Merkmale. So ist ein Wechsel mit Arbeit verbunden und Kunden sind an die Anbieter gebunden.
-
Kontrollverlust und längere Kommunikationswege: Mit der Beauftragung eines externen Unternehmens wird natürlich auch ein Stück Kontrolle abgegeben und der Kommunikationsweg verlängert.
-
Kosten: Durch das Pay-as-you-go Modell ist es Möglich, dass die Kosten bei langfristiger Verwendung und Serverlast höher sind als bei der Zahlung für festen Speicherlatz.
Bekannte Anbieter:
-
AWS (Amazon Web Services)
-
IBM
-
Microsoft Azure
-
Google Cloud Functions
Fazit
Serverless ermöglicht eine flexible, skalierbare und, in bestimmten Anwendungsfällen, kosteneffiziente Lösung. Durch das Pay-as-you-go Kostenmodell ist diese Form von Cloud-Computing für eine dynamische Serverlast ausgelegt. Das heißt im Umkehrschluss, dass Anwendungen und Seiten mit konstanter Auslastung finanziell von der serverless Architektur nicht profitieren. Die Profitabilität sollte in jedem Anwendungsfall individuell geprüft werden. Auch bei der Wahl des Service-Providers ist es aufgrund der Bindung durch anbieterspezifischen Funktionen ratsam, vorher genau die Projektanforderungen zu prüfen.
Quellen:
https://www.ibm.com/de-de/topics/serverless
https://kruschecompany.com/de/serverless-architektur-fuer-moderne-anwendungen/
https://www.redhat.com/de/topics/cloud-native-apps/what-is-serverless#vor--und-nachteile