Microservices fachlich steuern mit Camunda und Zeebe

(Kommentare: 0)

Ein in BPMN modellierter Prozess
Ein in BPMN modellierter Prozess

Die Erstellung von individuellen Softwarelösungen in Java und die Digitalisierung von Geschäftsprozessen gehören zu den Kernkompetenzen von SyroCon. So ist es wenig verwunderlich, dass sich die Produkte unseres Berliner Partners Camunda im Portfolio von SyroCon wiederfinden. Auf der Basis der Software von Camunda lassen sich in BPMN modellierte Workflows implementieren und ausführen. BPMN steht dabei für „Business Process Model and Notation“ und ist ein ISO-Standard, um Geschäftsprozesse darzustellen.

Um in diesem Bereich stets am Puls der Zeit zu sein, waren wir im vergangenen Jahr wieder auf der CamundaCon. Dort haben wir uns über die neusten Entwicklungen und Trends informiert und mit zahlreichen anderen Experten zu diesem Thema ausgetauscht. Neben der Weiterentwicklung der klassischen Camunda-Engine ging es vor allem um die Herausforderungen, die moderne Lösungsansätze wie eine Microservice-Architektur mit sich bringen. In einer Zeit, in welcher der Software-Monolith die Verkörperung alles Schlechten darstellt – worüber sich sicherlich je nach Anwendungsfall diskutieren ließe – und Anwendungen kleiner und fachlich spezifischer werden, stehen Software-Architekten und Entwickler vor neuen Aufgaben, die gelöst werden wollen. Es gilt, die stetig wachsende Anzahl von Services unter Kontrolle zu halten und so flexibel zu sein, dass man auf sich verändernde Kundenanforderungen stets eingehen kann.

Prozess „Urlaubswunsch“))
Prozess „Urlaubswunsch“

Optimierung + Visualisierung von Microservices

Zu diesem Zweck arbeitet Camunda seit 2017 an einer neuen Prozess-Engine mit dem Namen „Zeebe“. Zeebe verfolgt das Ziel, Microservices zu orchestrieren, die Ausführungsreihenfolge in einem Prozess von dessen Geschäftslogik zu trennen und diese für Nutzer (auch solche ohne spezifischen technischen Hintergrund) zu visualisieren. Diese erhalten so einen Überblick über den momentanen Zustand der laufenden Prozesse.

Dieser Vorteil sollte nicht unterschätzt werden. Um dies zu verdeutlichen, kann man sich einen Prozess anschauen, dessen Fachlichkeit jedem Leser bekannt sein sollte. Es geht um den vereinfachten Prozess, welcher gestartet wird, wenn man Urlaub machen möchte.

 

Prozesse einfach modifizieren

Zu Beginn ist der Wunsch nach Urlaub, danach muss man diesen bei seinem Arbeitgeber beantragen, einen Flug und ein Hotel buchen und letztlich kann man verreisen. Die einzelnen Schritte können hier wie Services unabhängig voneinander verwendet werden. Allerdings können die Resultate eines Schrittes Auswirkungen auf die anderen haben.

Durch das Diagramm wird deutlich, dass bei diesem Prozessentwurf die Schritte sequenziell ausgeführt werden. Bereits zu diesem Zeitpunkt der Realisierung kann ein Stakeholder, welcher aus technischer Sicht nicht in die Implementation des Workflows involviert ist, fachliche Einwände anbringen. Zum Beispiel kann es sein, dass die Reihenfolge der Schritte geändert werden muss oder Dinge parallel ausgeführt werden können. Sollte dies der Fall sein, müssen nicht die einzelnen Services angepasst werden, sondern im Idealfall nur eine modifizierte Version des Prozesses in Betrieb genommen werden. Wie mit bereits laufenden Workflows verfahren wird, liegt im Ermessen der fachlich verantwortlichen Stakeholder. Grundsätzlich können diese Instanzen mit der ursprünglichen Prozessvariante fortlaufen oder auf die neue Version migriert werden.

Kommunikation
Kommunikation

Die Entscheidung, dass der Ablauf des Prozesses angepasst werden muss, kann manchmal auch erst nach dem Go-Live der Software erfolgen. Zum Beispiel kann der Produktivbetrieb aufzeigen, dass zuvor getroffene Annahmen nicht eintreten oder Sachverhalte in der Realität abweichen, etwa, dass die Buchungsbestätigung eines Fluges in der Regel nicht innerhalb von 24 Stunden eintrifft. Dann muss eine fachliche Lösung  für diese Problemstellung gefunden werden. Beispielsweise kann in diesem Fall ein zusätzlicher Schritt in den Prozess eingefügt und eine erneute Anfrage versendet werden.

Dies sind Argumente, die dafür sprechen, die Logik für den Ablauf eines Prozess nicht im Quellcode eines Systems zu verstecken, sondern dieses visuell für die Anwender darzustellen, damit diese gegebenenfalls fachliche Rückschlüsse ziehen können. Die Alternative wäre, dass man sich diese Informationen aus Logfiles extrahiert oder mit einer individuellen Lösung aufbereitet.

 

Große Datenströme ohne Latenzen

Vom Grundsatz her ist dies bereits mit der ursprünglichen Prozess-Maschine von Camunda möglich. Bei Zeebe wurde der Fokus primär auf die Performance gelegt. Dabei wurde es dafür optimiert, große Datenströme ohne nennenswerte Latenzen verarbeiten zu können. Diese Datenströme könnten beispielsweise aus einem Apache Kafka Cluster stammen. Das Prinzip, um die Anbindung von Kafka zu realisieren, ist dabei, dass Prozesse auf zuvor definierte Ereignisse hin gestartet werden. Die einzelnen Schritte des Workflows lösen dann selbst Ereignisse aus, welche über Kafka an die Services verteilt werden, welche diese dann abarbeiten.

Um diese Performance-Vorteile zu erlangen, hat man sich jedoch dazu entschieden, nicht den vollständigen Funktionsumfang von BPMN 2.0 in Zeebe zu unterstützen und sich zunächst auf wesentliche Bestandteile zu fokussieren.

Es wird spannend sein zu verfolgen, wie sich Zeebe weiterentwickelt und in welchen Szenarien es eingesetzt wird.

 Übrigens handelt es sich bei Zeebe um ein Open-Source-Projekt, welches hier auf Github zu finden ist.

 

Autor:
Alexander Weigel
Consultant

Bildrechte: © SyroCon

Zurück