Der IT-Sektor „Cloud“ wächst stetig und bietet Kunden verschiedene Dienstleistungen und somit eine vielfältige Palette an Möglichkeiten. Im Blogbeitrag „Was ist Serverless-Computing?“ haben wir die Begriffe des Serverless-Computing und Möglichkeiten sowie Vor- und Nachteile der Nutzung dieser Dienste beschrieben. Auch sind wir näher auf das Thema AWS Lambda eingegangen. Der nun folgende Artikel beleuchtet, wie Serverless-Computing in der Umgebung der IBM Cloud funktioniert.
Die IBM Cloud bietet eine Function-as-a-Service (FaaS) Lösung namens IBM Cloud™ Functions. Hiermit können Sie, ganz ohne den Einsatz von Serverinfrastrukturen, Anwendungslogiken als Reaktion auf Ereignisse oder direkte Aufrufe von Web- oder Mobilanwendungen über HTTP ausführen. Cloud Functions übernimmt die Systemverwaltung, z. B. das Verfügbarkeitsmanagement und die Wartung, so dass Sie sich als Entwickler auf das Schreiben der Anwendungslogik konzentrieren können. (Quelle)
Die Entwicklung kann auf zwei Arten beginnen:
Beide Wege führen zu den gleichen Ergebnissen. Die Verfahrensschritte sind für beide Wege ähnlich und im Folgenden als Schritt-für-Schritt Anleitung aufgelistet. (Quelle)
Bei der Entwicklung und Ausführung von IBM Cloud™ Functions sind einige typische Schritte zu beachten:
Cloud Functions basiert auf OpenWhisk, einem Open-Source-Projekt, das Komponenten wie NGINX, Kafka, Docker und CouchDB zu einem serverless-ereignisbasierten Programmierdienst kombiniert. (Quelle)
Der erste Einstiegspunkt in das System erfolgt über NGINX, einen HTTP- und Reverse-Proxy-Server. NGINX wird für die SSL-Terminierung und die Weiterleitung entsprechender HTTP-Aufrufe verwendet. NGINX leitet die HTTP-Anfrage an den Controller weiter, die nächste Komponente auf dem Weg durch OpenWhisk.
Der Controller ist eine Scala-basierte Implementierung der eigentlichen REST-API (basierend auf Akka und Spray). Als solcher dient der Controller als Schnittstelle für alles, was Sie tun möchten, einschließlich der Erstellung, Abfrage, Aktualisierung und Löschung von Anfragen für Ihre Entitäten in OpenWhisk und dem Aufruf von Aktionen. Nun prüft der Controller, wer Sie sind (Authentifizierung) und ob Sie die erforderlichen Berechtigungen haben, um das zu tun, was Sie mit dieser Entität tun wollen (Autorisierung). Die Credentials, die in der Anfrageenthalten sind, werden mit der sogenannten Subjects Datenbank in einer CouchDB Instanz abgeglichen. Nachdem der Controller festgestellt hat, dass man authentifiziert und autorisiert ist, die Aktion aufzurufen, lädt er die Aktion aus der Whisks Datenbank in CouchDB.
Der Load Balancer weiß, welche Invoker verfügbar sind und wählt einen von ihnen aus, um die angeforderte Aktion aufzurufen. Der Controller und der Invoker kommunizieren ausschließlich über Nachrichten, die von Kafka gepuffert und persistiert werden. Kafka entlastet sowohl den Controller als auch den Invoker von der Pufferung im Speicher und stellt gleichzeitig sicher, dass die Nachrichten bei einem Systemabsturz nicht verloren gehen.
Um Aktionen isoliert und sicher auszuführen, wird mit Docker für jede aufgerufene Aktion eine selbstgekapselte Umgebung (ein sogenannter Container) eingerichtet. Nach der Erstellung des Containers wird der Code injiziert und dann mit den übergebenen Parametern ausgeführt. Wenn die Ergebnisse zurückgegeben werden, wird der Container zerstört. In dieser Phase können Leistungsoptimierungen vorgenommen werden, um den Wartungsaufwand zu verringern und niedrige Antwortzeiten zu ermöglichen. Nachdem der Invoker das Ergebnis erhalten hat, wird es in der whisks-Datenbank als eine Aktivierung unter der zugewiesenen Aktivierungs-ID gespeichert. Die whisks-Datenbank befindet sich in CouchDB.
Im Allgemeinen sind IBM Cloud™ Functions nützlich für kleinere Aufgaben bei mobilen Anwendungen mit nicht weiterführenden Aufrufen. Vorteile sind hier die Skalierbarkeit, eine einfache Auslösung und die Datei-Validierung. Die IBM Cloud™ Functions eignen sich unter anderem für Unternehmen mit kompakten Prozessen.(Quelle)
Auch wir bei der Libelle IT Group setzen auf die Vorteile der Cloud und stellen Ihnen verschiedene Lösungen zur Verfügung. Nutzen Sie jetzt die Cloud-Editions von Libelle DataMasking (AWS / Microsoft Azure), Libelle SystemCopy (AWS / Microsoft Azure) oder Libelle CloudShadow (IBM Cloud).