9. Februar 2021 von Jean-François Gonguet
Implementierung Microservice-basierter Architekturen mit der BPM-Engine von Camunda
Microservice-basierte Architekturen sind ein aktueller Trend zur Umwandlung von Informationssystemen. Diese zeichnen sich in erster Linie durch die weitgehende Entkopplung zwischen der Implementierung eines Microservices und seinen Anwendungen aus. Dadurch wird bei der Entwicklung von Anwendungen eine höhere Flexibilität gewährleistet. Um diese Entkopplung zu gewährleisten, sprechen wir von Event-driven Architecture, also einer ereignisgesteuerten Architektur. Die größte Herausforderung besteht in der Einrichtung eines Mechanismus für das Zusammenspiel der Microservices, der so genannten Service-Choreographie.
Die bekannteste und am häufigsten verwendete BPM-Lösung von Camunda dient der Lebenszyklusverwaltung von Geschäftsprozessinstanzen beziehungsweise der Prozess-Orchestrierung. Im folgenden erkläre ich euch, wie diese Lösung auch die Microservice-Choreographie ermöglicht.
Microservice-Konzepte
Im Hinblick auf die Architektur von Informationssystemen besteht die Strategie vieler Unternehmen gegenwärtig darin, einen microservice-basierten Ansatz zu implementieren. Diese Bewegung schöpft aus zahlreichen Wissensgrundlagen über die SOA-Architektur (Service Oriented Architecture) und kann heute als «SOA 2.0» betrachtet werden.
In seiner Publikation «Building Microservices» definiert Sam Newman Microservices als „small, autonomous services that work together”:
- Small, da der Microservice einen einfachen, klar abgegrenzten Umfang besitzt und nur eine grundlegende Funktion erfüllt
- Autonomous, da auf den Microservice über eine von der Implementierungssprache unabhängige API zugegriffen werden kann
- Work together, da im Wesentlichen jeder Service mit anderen interagieren kann
Ein weiterer Faktor, der für die Einführung einer microservice-basierten Architektur spricht, ist ihre Eignung zur Implementierung von CI/CD-Prinzipien (Continuous Integration / Continuous Delivery) aufgrund der losen Kopplung zwischen den Komponenten.
Im Rahmen der Ausführung versendet ein Microservice Events, sobald der Aufruf anderer Services erforderlich ist. Diese Services reagieren entsprechend auf diese Events und versenden gegebenenfalls selbst weitere Events. Die Gesamtheit dieser Interaktionen wird als Service-Choreographie bezeichnet.
Von Camunda für die Microservice-Choreographie verwendete Grundprinzipien
Das strukturierende Element für die Service-Choreographie ist das Publizieren und Abfangen von Events unter Wahrung ihrer Konsistenz und Integrität (es gehen keine Nachrichten verloren, und jede Nachricht wird einzeln abgefangen).
Im Rahmen der Implementierung jedes Microservices als Prozess, der mit der Leistung des BPMN-Standards modelliert und in einer beispielsweise von Camunda bereitgestellten BPM-Engine gesteuert wird, lässt sich Folgendes ohne Weiteres festlegen:
- 1 Die Einstiegspunkte für jeden Microservice und die erwartete Struktur bei eingehenden Nachrichten
- 2 Wann und unter welcher Bedingung die einzelnen Events an einen anderen Service zu versenden sind und die Ausgabe einer Nachricht, die mit der API des Zielservices übereinstimmt
- 3 Die Wartepunkte für einen bestimmten Microservice der zu erwarteten Antworten
Im nachstehenden Beispiel ist zur Verdeutlichung dieser Prinzipien die Modellierung zweier Services aufgeführt:
Ausführungsarchitektur
Der Aufbau von Microservices ermöglicht auf Grundlage der BPM-Engine von Camunda eine effiziente Nutzung der event-driven-Funktionen von BPMN. Da sich dieses Modell von IT-Teams ohne weiteres erweitern lässt, um ausführbar zu werden, können strukturelle Änderungen des Microservices schnell und flexibel berücksichtigt werden.
Zur umfassenden Gewährleistung von Integrität und Konsistenz im Rahmen der Service-Choreographie kann man sich auf zwei Funktionen in der BPM-Engine von Camunda stützen:
- Persistenz-Funktion: Alle ausgetauschten Nachrichten werden in der Datenbank innerhalb einer über das Modell definierten Transaktion gespeichert.
- Scheduling-Funktion: Camunda stellt sicher, dass die im Modell definierten zeitlichen Grenzen, zum Beispiel Wartezeiten, bei der Ausführung eingehalten werden.
Die Ausführungsarchitektur bietet mehrere Optionen: Entweder ist eine Instanz der BPM-Engine verfügbar, über die die einzelnen Microservice-Modelle bereitgestellt werden oder die BPM-Engine wird in separate Instanzen eingebettet, die über einen Nachrichtenbus (zum Beispiel Nachrichtenbroker von AMQ oder Event Broker von Kafka) kommunizieren.
In der nachstehenden Abbildung ist eine auf der zweiten Option basierte Ausführungsarchitektur veranschaulicht:
Fazit
Die von Camunda in die Automatisierung von Geschäftsprozessen eingebrachte Expertise findet ebenfalls Anwendung in der Microservice-Choreographie. Die Unterstützung des BPMN 2.0-Standards von Camunda ermöglicht die Nutzung spezifischer Elemente für die ereignisbasierte Modellierung, was die Implementierung und Wartung von Microservices maßgeblich vereinfacht.
adesso verfügt über einen weitreichenden Pool aus geschäftlichen und technischen Beratern, die in der «Community of Practice Work Automation» ihre Erfahrungen und ihr Know-how austauschen und bereit sind, diese Expertise in den Dienst von Kundenprojekten zu stellen.