Function as a Service: Was ist serverless Computing?
Nicht nur für Start-ups, sondern auch für immer mehr Projekte in etablierten Firmen werden cloud-native Anwendungen zum neuen Standard für die digitale Transformation.
Alles nur (ge)Cloud
Standen bei den ersten Gehversuchen in der Cloud eher Infrastrukturdienste (IaaS) und gehostete Software (SaaS) im Vordergrund, werden jetzt immer mehr PaaS-(Platform as a Service)-Lösungen eingesetzt. Eine gerade beliebte spezielle Spielart von Microservices sind serverless Architekturen. Angefeuert durch Microservices, gibt es von einigen Cloud-Anbietern die Möglichkeit, kleine Funktionen ereignisgesteuert aufzurufen und bedarfsgerecht abzurechnen. Als FaaS (Function as a Service) stellen diese in Kombination mit Container as a Service-(CaaS)-Lösungen und bestehenden Cloud-Diensten ein attraktives Angebot dar. Wir erklären den neuen Ansatz.
Small is beautiful
Im Rahmen der Energiekrise war "Small is beautiful" ein Ruf zur "Rückkehr zum rechten Maß" und einen angemessenen Umgang mit Ressourcen zu finden. In der digitalisierten Welt beschreibt "Software is eating the world" einen Trend, dass Software immer mehr zur Grundlage von Geschäftsprozessen, neuen Geschäftsmodellen und damit der entscheidende Faktor bei der digitalen Transformation wird. Die Cloud spielt dabei eine herausragende Rolle. Mit serverless Computing und der DevOps-Bewegung rückt wieder die Entwicklung in den Vordergrund. Eine gute Einführung in serverless Computing und Architekturen findet sich beim Beratungsunternehmen Thoughtworks [1,2].
Dabei geht es einerseits darum, einzelne Funktionen schneller und mit nutzungsabhängigen Kosten dynamisch und flexibel zur Verfügung zu stellen – quer durch alle Branchen. Denn kein Server ist einfacher zu managen als gar kein Server. Wer braucht noch Server, wenn es Dienste gibt? Querschnittliche Aufgaben wie Sicherheit oder Überwachung werden durch spezialisierte Komponenten umgesetzt.
Damit solche rein auf die Fachlichkeit konzentrierten leichtgewichtigen Dienste erstellt werden können, muss die Architektur des Gesamtsystems neu gedacht und gebaut werden. Dadurch, dass diese Dienste in beliebiger Anzahl verteilt und zustandslos ablaufen, benötigt man neben einem automatisierten Deployment-Prozess auch viele durch DevOps bekannt gewordene Prinzipien und Muster. Dazu gehören die zwölf Faktoren eines konfigurierbaren, überwachbaren und unabhängig lauffähigen Dienstes [3], als auch die Muster zur Umsetzung der vier Prinzipien einer reaktiven Architektur. Reaktive Systeme können die Kriterien antwortbereit, widerstandsfähig, elastisch und nachrichtenorientiert erfüllen [4].
Function as a Service in der Cloud
Der älteste und sehr etablierte Cloud-Anbieter ist Amazon mit seinen Amazon Web Services (AWS). Diese entstanden vor 10 Jahren als Abfallprodukt des enormen Rechenbedarfs des Amazon-Shops. Das Angebot der dort inzwischen zur Verfügung stehenden Services ist inzwischen kaum mehr zu überblicken. Im Zuge von DevOps und Microservices gibt es seit drei Jahren AWS Lambda (Motto "Run Code, Not Servers"). Damit lassen sich leichter reaktive und event-orientierte Architekturen im AWS-Universum umsetzen. Doch auch die Konkurrenten Microsoft (Azure Functions), Google (Functions) und IBM (OpenWhisk) haben seit kurzem serverless Computing im Angebot. Neben den Lizenzen liegen den Angeboten auch unterschiedliche Betriebs- und Kostenmodelle zugrunde.
Der typische Aufbau einer serverless Computing-Architektur ist in Abb.3 dargestellt. Es gibt eine Funktion, die aufgrund eines Ereignisses, in einem bestimmten Kontext gestartet wird und Geschäftslogik oder andere Backend-Dienste aufruft. Dessen Ergebnis wird dann asynchron zurückgeliefert. Es kann jedoch auch nur der Start eines Batch-Programmes sein.
Wer sich noch an Stored Procedures und Trigger bei relationalen Datenbanken erinnert, wird hier einige Ähnlichkeiten aber auch entscheidende Unterschiede feststellen. Weil Stored Procedures eher für datenorientierte Verarbeitung gedacht waren, war es schwierig, mit der eingeschränkten Syntax komplizierte Geschäftslogiken abzubilden oder Integrationen weitere Systeme vorzunehmen.
Mangels Standards konnten diese nur mit großem Aufwand von einem Datenbankprodukt auf ein anderes portieren werden. Ebenso war das Deployment, Testen, die Überwachung und die Versionierung dieser Programme nur sehr eingeschränkt möglich. Letztendlich blieben sie immer ein Fremdkörper und erzeugen bis heute bei der Legacy-Ablösung große Probleme. Die serverless Computing-Funktionen sind zwar auch proprietär, jedoch zustandslos und beschränken sich bewusst selbst auf kurze und eventorientierte Teilfunktionen. Bis auf IBM OpenWhisk sind diese Plattformen jedoch nur in der Cloud verfügbar. Sie unterstützen eine Reihe von bekannten Skriptsprachen und Compilersprachen. Als Werkzeuge werden immer der Browser und die Kommandozeile unterstützt. Bei einigen Anbietern gibt es auch weitere spezialisierte Frameworks [5] und Integrationen in die IDEs (Eclipse, Visual Studio). Die Anbieter erleichtern den Einstieg auch mit fertigen Beispielen und einer umfangreichen Dokumentation. Zum Thema serverless Computing allgemein, aber auch speziell für AWS Lambda, gibt es auch schon weiterführende Fachbücher [6].
Ein sehr umfangreiches Thema, sind die geschätzten Kosten. Wer die entstehenden Kosten genauer abschätzen möchte, kann den Serverless Cost Calculator online zu einer Grobrechnung für die vier serverless Anbieter verwenden [7]. Einen groben Überblick zu den serverless Computing-Angeboten gibt die folgende Tabelle.
Tabelle 1: Serverless Computing-Anbieter im Vergleich
Anbieter | seit | Umgebungen | Cloud | On Premise | Lizenz |
---|---|---|---|---|---|
AWS Lambda [8] | 2014 | Node.js, Java, Python, .NET Core (C#) | Ja | Nein | ASL |
Azure Functions [9] | 2016 | Node.js, Java, Python, .NET (C#, F#), PHP, Bash | Ja | Nein | MIT |
Google Functions [10] | 2016 (Alpha) | JavaScript | Ja | Nein | ASL |
IBM OpenWhisk [11] | 2014 | Node.js, SWIFT | Ja | Ja | ASL |
Das Neueste und auch das Angebot, das sich noch in der Alpha-Phase befindet, ist das von Google. Dazwischen bewegen sich IBM und Microsoft, zunächst mit dem Schwerpunkt in den eigenen Produktwelten. Letztendlich bietet das Angebot von Amazon – nicht nur von der Reife, sondern auch von der Vielzahl der gut integrierten Dienste und Events – eines der attraktivsten Angebote. Aus Kostengesichtspunkten sollte man sich jedoch gut überlegen, welche Microservices für serverless Computing in Frage kommen oder ob man diese besser ins Backend verlagert.
Der Megatrend Digitalisierung erfordert ein radikales Umdenken in der Unternehmens-IT.
Bei Azure Functions haben Sie z. B. die Wahl zwischen zwei Tarifen: dem Verbrauchstarif (die verwendeten Ressourcen, wenn Ihre Funktion ausgeführt wird) oder den App Service-Tarif (wenn bereits weitere Azure-Dienste genutzt werden, sind die App-Functions kostenlos und werden über die jeweils genutzten Azure-Dienste abgerechnet). Bei AWS Lambda kann man sehr einfach die vielen anderen Amazon Web Services zunächst kostenlos nutzen, solange man die monatlichen Freikontingente für Lambdas (1 Mio. Aufrufe und 400.000 GB/s Datenverarbeitungszeit) nicht überschreitet. Die kostenlose Nutzung der anderen AWS-Dienste endet nach 12 Monaten. Bei IBM Bluemix endet die kostenlose Nutzung bereits nach 30 Tagen. Sicher sprechen IBM und Microsoft zunächst ihre Stammkunden mit ihren eigenen Produkten an. Es ist jedoch auch möglich, die Angebote der Anbieter miteinander zu kombinieren und z. B. den Storage bei Google Drive einzukaufen oder die Benutzerverwaltung bei Azure zu haben.
Fazit
Der Megatrend Digitalisierung erfordert ein radikales Umdenken in der Unternehmens-IT. Die Zeiten von Monolithen und großen Middleware- und relationalen Datenbank-Produkten neigen sich dem Ende. Das haben nicht nur die Anbieter dieser traditionelleren Produkte schmerzhaft merken müssen. Auch die damit umgesetzten Systeme sind bereits an ihre natürlichen Grenzen gestoßen.
Für die heutigen Anforderungen durch mobile, aber auch IoT-Anwendungen sind Microservices-Anwendungen, wie sie mit FaaS möglich sind, die richtige Antwort. Nur wer bereits erste Schritte mit DevOps und Cloud-Computing gegangen ist, kann den nächsten Evolutionsschritt mitgehen. Wie immer bietet dies nicht nur neue Chancen, sondern auch Herausforderungen. Die sich rasant weiterentwickelnden Cloud-Angebote bieten jedoch immer besser werdende Unterstützung und liefern Best Practice-Umsetzungen, die in eigenen Projekten gut nutzbar sind. Der Weg zur Right-Sized-IT führt für viele Unternehmen zu einer bimodalen IT-Organisation. Um Ressourcen und Kosten effizient zu nutzen, bieten die bereits existierenden serverless Computing-Angebote eine gute Ergänzung für erste Gehversuche. Geschwindigkeit und Flexibilität spielen bei einer immer weniger mit festen Budgets planbaren dynamischen IT-Landschaft eine immer größere Rolle.
- Martin Fowler: Serverless
- Martin Fowler: Serverless Architectures
- Die zwölf Faktoren
- Das Reaktive Manifest
- Serverless
- M. Hausenblas, 2017: Serverless Ops, O’Reilly Media
D. Poccia, 2016: AWS Lambda in Action, Event-driven serverless applications, Manning
P. Sbarski, 2017: Serverless Architectures on AWS, Manning
JJ Geewax, 2017: Google Cloud Platform in Action, Manning - Serverless Cost Calculator
- AWS Lambda
- Azure Functions
- Google Functions
- IBM OpenWhisk
Publikationen
- Apache Geronimo. Handbuch für den Java-Applikationsserver, m. DVD-ROM: Frank Pientka