Im Zusammenhang mit Cloud- und Serverless-Architekturen stellt sich oft die Frage, wie mit den neuen Ansätzen Integrationsszenarien realisiert werden können. Im Folgenden werden speziell Technologien im AWS-Umfeld, die in einem solchen Szenario zum Einsatz kommen können, genauer betrachten. Besonders im Zusammenhang mit Serverless-Architekturen bietet AWS einige interessante Werkzeuge.
Ein Integrationsprozess kann in drei Abschnitte unterteilt werden, die Eventquelle, die durch einen Auslöser den Prozess startet, die Logikebene, in der die eigentliche Verarbeitung läuft und ein Ziel, an welches das Ergebnis gesendet wird. Der Kernbestandteil der Logikebene bilden eine oder mehrere AWS Lambda-Funktionen, welche die Logik als Reaktion auf einen Eventtrigger ausführen. Der Vorteil von sogenannten „Serverless Functions“ wie AWS Lambda ist dabei, dass keine Infrastruktur zur Ausführung des Codes benötigt wird: Die Laufzeitumgebung steht in der Cloud zur Verfügung.
Abbildung 1: AWS Integrationsprozess – Ebenen
Dynamische Eventquelle
Den Start eines Integrationsprozesses stellt ein Event dar. Dafür gibt es verschiedene Eventquellen, die als Auslöser für den Prozess fungieren können.
Veränderung von Daten:
Die Auslöser lassen sich in verschiedene Kategorien unterteilen. Eine Kategorie sind Datenspeicher. Dabei wird ein Integrationsprozess als Reaktion auf eine Datenänderung gestartet. Hierzu gehören beispielsweise benutzerdefinierte Aktionen in Reaktion auf die Veränderung einer DynamoDB-.Tabelle. Ein weiteres Beispiel wären Lambda-Funktionen, mit denen Datensätze aus einem Kinesis-Stream gelesen und verarbeitet werden, wenn solche Datensätze im Stream erkannt werden. Neben push-basierten Eventquellen sind also auch Pull-Methoden möglich, die nach Ü„nderungen in einer Quelle suchen.
Anfragen an Endpunkte:
Eine gängige Methode, um Applikationen bestehend aus einer oder mehreren Lambda-Funktionen zu veröffentlichen, ist das API Gateway. Das Gateway übernimmt dabei die Aufgabe, den einkommenden Request in ein für die Lambda-Funktion verständliches und verarbeitbares Event zu übersetzen und so die jeweilige Funktion aufzurufen. Dies ist notwendig, da Lambda-Funktionen keine HTTP-basierten Requests oder Responses verarbeiten können, sondern rein event-basiert laufen.
Event- oder Nachrichten-Services:
Eine weitere Trigger-Kategorie sind Event- oder Nachrichten-Services. Ein Beispiel hierfür ist der AWS Simple Notification Service (SNS). Mittels SNS können Nachrichten einfach an Clients und Endpunkte weitergeleitet werden. Nachrichten können dabei direkt per Push an autorisierte Services wie eine AWS Lambda-Funktion gesendet werden. Ein weiteres Beispiel für diese Kategorie sind Cron Events oder der Amazon Simple Email Service (SES) zum Versand von E-Mails.
Orchestrierung und Logik
AWS Lambda:
Wie bereits erwähnt ist Lambda die Basis für eine AWS Serverless-Architektur und damit ein Kernbestandteil eines Integrationsprozesses. Innerhalb der Applikation können Datenvalidierung, Filterung, Sortierung oder andere Transformationen durchgeführt werden. Unterstützt werden dabei verschiedene Sprachen wie Node.js, Java, C# oder Python. Mithilfe von API Gateways lassen sich Lambda-Funktionen einfach in bestehende Architekturen einbinden, da das Gateway beispielsweise einfache REST-Calls empfangen und umwandeln kann. Dies wird in den meisten bestehenden Architekturen bereits ohne zusätzliche Ü„nderungen unterstützt.
AWS Step Functions:
AWS Step Functions erleichtern die Koordination der Komponenten verteilter Anwendungen und Microservices mithilfe visueller Workflows. In einer serverlosen Plattform übernimmt Step Functions die Orchestrierung der verschiedenen Lambda-Funktionen einer Applikation. In einem Integrationsprozess können somit mehrere Lambda-Funktionen orchestriert werden. Diese bilden damit die Logik der Applikation ab.
Ziel
Das Ziel als letzte Ebene kann jeder AWS oder Custom Service sein. Im Zielsystem können zum Beispiel transformierte Daten gespeichert oder weitere Aktionen wie der Versand von E-Mails oder der Aufruf einer neuen Funktion getriggert werden. Das Ziel stellt in einem One-way-Prozess das Ende eines AWS Integrationsprozesses dar. Jedoch sind auch Szenarien denkbar, in denen das Zielsystem wiederum als Trigger fungiert. In einem konkreten Fall könnten also Daten aus einem Input File gelesen, mithilfe einer AWS Lambda-Funktion verarbeitet und am Ende in einer DynamoDB gespeichert werden.
Fazit
Mit den Komponenten, die Amazon Webservices bietet, bestehen einige Möglichkeiten, ein Integrationsszenario zu verwirklichen. Besonders in Verbindung mit Lambda-Funktionen kann ein solcher Prozess in passenden Szenarien einige Vorteile wie Kostenersparnisse bringen.