Frank PientkaInnovation und Technologie

Was ist Cloud native serverless Computing?

Je weiter die Nutzung der Cloud und ihre Techniken fortschreiten, umso breiter werden ihre Angebote und Nutzungsmöglichkeiten. Mit serverless Computing rückt wieder die Programmierung in den Vordergrund. Wir erklären den neuen Ansatz.

Spielten am Anfang vor allem Infrastrukturen (IaaS) und gehostete Software (SaaS) eine große Rolle, ist das jetzt PaaS (Platform as a Service). Eine spezielle, gerade beliebte Spielart von Microservices sind serverless eventbasierte Architekturen. Angefeuert durch Microservices, gibt es von einigen Cloud-Anbietern die Möglichkeiten, kleine Funktionen ereignisgesteuert aufzurufen und bedarfsgerecht abzurechnen. Diese werden auch als FaaS (Function as a Service) bezeichnet. Oft basiert diese auf Container as a Service (CaaS) Lösungen.

Dabei wird die Abwendung mit all ihren Abhängigkeiten in eine Datei gepackt. Abhängigkeiten zur Umgebung werden dadurch minimiert. 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. Dieser Ansatz ist gerade für Cloud-Installationen oder Docker-Container gut geeignet.

Damit solche leichtgewichtigen rein auf die Fachlichkeit konzentrierten Dienste erstellt werden können, braucht man eine Programmiersprache, die kurze Startzeiten hat. Außerdem muss auch die Architektur des Gesamtsystems neu gedacht werden. Dadurch, dass diese Dienste in beliebiger Anzahl verteilt und zustandslos ablaufen, benötigt man neben einen 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, als auch die Muster zur Umsetzung der vier Prinzipien einer reaktiven Architektur. Reaktive Systeme können die Kriterien antwortbereit (Englisch: responsive), widerstandsfähig (English: resilient), elastisch (Englisch: elastic) und nachrichtenorientiert (Englisch: message driven) erfüllen.

Zu den wichtigsten Vertretern für serverless Computing zählen nicht überraschend die Angebote der führenden Cloud-Anbieter. Das sind hierzulande Amazon Lambda, Microsoft Azure Functions (MIT License), Google Functions (ASL) und IBM OpenWhisk (ASL) sowie http://incubator.apache.org/projects/openwhisk.html.

Das älteste und damit am weiteste fortgeschrittene und am besten integrierte Angebot bietet Amazon seit 2013 an. Sie beruhen auf dem seit den 70ern bekanntem Aktorenmodell.

Die Kommunikation zwischen den Aktoren, die bei Amazon Lambdas heißen, erfolgt asynchron über Nachrichtenereignisse, zu den sich diese registrieren können. Lambdas können in unterschiedlichen Programmiersprachen, JavaScript mit node.js, Java, C# oder Python erstellt werden.

Für viele zu integrierenden AWS-Dienste gibt es bereits fertige Events, die man bei der Konfiguration seiner Lambda-Funktionen angeben kann. Da viele Events auch als Strom zur Verfügung stehen, können damit auch Realzeitanwendungen erstellt werden. Gerade da die Ressourcen und die Ausführungszeiten von Lambdas bewusst limitiert sind, muss man das frühzeitig bei der Realisierung berücksichtigen und auch in der Praxis testen. Deswegen sind Lambdas auch nicht die Antwort auf alle Anwendungsfälle.

Interessant ist besonders das Abrechnungsmodell, da hier der API-Aufruf und nicht Rechenzeit oder Speicher die Basis sind. Für die Umsetzung der nicht-funktionalen Anforderungen, wie Skalierung, Sicherheit, Lifecycle Management, Caching oder Überwachung, ist man auf andere AWS-Dienste angewiesen, da die Basislogging und Autoscaling-Dienste von Lambda meist dafür nicht ausreichen. Es gibt bereits Frameworks wie Serverless oder Integrationen in beliebte Entwicklungsumgebungen wie Eclipse, die bei den ersten Hürden helfen, um Lambdas produktiv zu nutzen.

Wer sich nicht komplett auf die proprietären Dienste eines Cloud-Anbieters verlassen möchte, kann zumindest bei IBM die unter der Apache-Lizenz verfügbare Variante IBM OpenWhisk auch lokal verwenden. Wenn man die kompletten Vorteile einer Cloud-Umgebung nutzen möchte, ist man jedoch meist an einen Anbieter gebunden.

Die Zeiten von Monolithen und großen Middleware-Produkten wie Applikations- oder Portalserver 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 dieser 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.

Schlagwörter: , ,