Mittwald Inside: BPMN Workflow Engine - Einsatz im neuen Kundencenter

|
Letztes Jahr im August hat Tobias Hüske in seinem Blog-Post über die Neuentwicklung unseres Kundencenters berichtet. Der ein oder andere aufmerksame Leser erinnert sich vielleicht noch an ein paar Technologien, die er in seinem Buzzword Bingo aufgezählt hat. React (Native), gRPC, MongoDB, Kubernetes und Event Sourcing waren Begriffe, die das Herz eines Webentwicklers höher schlagen lassen. In diesem Artikel möchte ich daran anknüpfen und euch vorstellen wie und warum wir bei Mittwald unsere neue Microservice-Architektur, bestehend aus vielen unabhängigen Prozessen, mit Hilfe einer Workflow Management Engine verwalten und welche Vorteile uns das bietet.

Was ist eigentlich ein Workflow / Prozess?

Beginnen wir mit einer kurzen Einführung in Prozesse, Workflows und der visuellen Aufbereitung solcher. Im Bereich der Prozessmodellierung ist der Begriff Business Process Model and Notation (kurz: BPMN) der geläufige Industriestandard bei der grafischen Darstellung und Modellierung von Geschäftsprozessen. Damit haben Unternehmen ein Werkzeug an der Hand, die Abfolge geschäftlicher Aktivitäten und Informationsflüsse zu visualisieren und für jedermann verständlich darzustellen. Das kann dabei helfen, Probleme in Abläufen aufzudecken, diese zu verbessern oder effizienter zu gestalten. 

Prozessbeispiel Pizza-Freitag

Ein klassischer Workflow bei Mittwald spielt sich (außerhalb von Corona-Zeiten) an jedem Freitag in der Produktentwicklung ab. Normalerweise ist bei uns immer Pizza-Freitag und es muss das Bedürfnis von Hunger gestillt werden, damit weiter gecodet werden kann.

An diesem einfachen Beispiel veranschaulichen wir diesen Prozess als BPMN Notation.

BPMN-Prozess: Pizza bestellen
Workflow des Prozesses "Pizza bestellen"

Der Workflow beginn damit, dass alle Entwickler hungrig sind und stoßen aus diesem Grund den Prozess „Pizza bestellen“ an. Daraufhin wird die Pizza online bezahlt und entweder geliefert oder abgeholt. Je nachdem wie die Ware zu Mittwald gelangt, wird auf unterschiedliche Art und Weise das Event „Pizza ist eingetroffen“ ausgelöst, woraufhin sich alle zum gemeinsamen Pizza essen treffen. Wenn alle satt sind, kann weiter programmiert werden.

Wie hilft uns eine Management Engine dabei, unsere Services zu managen?

Unsere neue „Event Sourcing“-basierte Welt setzt auf eine Microservice-Architektur. Das bedeutet, dass wir eine Menge kleiner Services einsetzen, die für eine spezielle Aufgabe zuständig sind. Das schafft Transparenz und sorgt dafür, dass die Aufgaben pro Service klar definiert sind und schnell ersichtlich wird, welche Daten dieser Dienst vorhält. Gleichzeitig reduziert es die Auswirkungen auf andere Services, sodass im Falle von Wartungsarbeiten oder technischen Ausfällen, das Ausmaß bestenfalls geringer ausfällt.

Neben dem Prozessbeispiel „Pizza bestellen“, gibt es im Hosting-Betrieb eine Menge weiterer Prozesse, die ein hohes Maß an Komplexität mit sich bringen, in denen Sub-Prozesse vorkommen und Fristen eingehalten werden müssen. Für den Fall, dass ein Kunde seinen Vertrag zum nächstmöglichen Zeitpunkt kündigen möchte, ergeben sich eine Reihe an weiteren Aufgaben, die auf unserer Seite angestoßen werden müssen: gebuchte Domains termingerecht freigeben, offene Posten begleichen, Auth-Codes erstellen und schlussendlich die personenbezogenen Daten löschen. Dieser Workflow kann, nachdem er angestoßen wurde, einige Wochen oder Monate aktiv sein. „Kalendereintrag und Checkliste“ ist aber bei der Anzahl an Kunden vielleicht nicht die beste Idee ;-). Zum Glück läuft das bereits heute schon anders und wird üblicherweise über geplante ToDos per Cronjob erledigt.

Unser neuer Ansatz verwendet zur Lösung dieser Probleme eine BPMN Workflow Engine. Dafür haben wir einen Adapter entwickelt, der auf unsere systemspezifischen Events lauscht, welche von unseren Microservices emittiert werden. Dabei sind wir unabhängig von Sprachen unterwegs und können dank gRPC alle unsere Services ansprechen – ganz egal, ob diese in Go oder Node geschrieben sind.

In der Workflow Engine modellieren wir also unsere Prozesse, ganz ähnlich wie man das beim Beispiel „Pizza bestellen“ sieht. Dabei wird der Startpunkt eines Workflows durch ein Event definiert, das eine automatisierte Reihenfolge an Tasks und Sub-Tasks auslöst und abarbeitet. Beim Modellieren definieren wir genau, welche Daten aus den Events benötigt werden und wie diese logisch ins Verhältnis gesetzt werden. Gleichzeitig ermöglicht es uns, auch Fehler abzufangen und auf diese zu reagieren. 

Unsere Workflow Engine und ihre Vorteile

Wir setzen momentan auf die Lösung von Camunda Cloud, die auf der Zeebe Engine basiert und für den Betrieb mit Kubernetes angedacht wurde, sodass sich die Lösung nahtlos in unsere Architektur einfügt. Die Unterstützung von gRPC ermöglicht es uns, dabei variabel im Einsatz verschiedener Programmiersprachen zu bleiben.

Die Engine kommt mit einer Management-Übersicht daher und bietet uns damit einige Vorteile:

  • Komplexe Prozesse lassen sich einfach nachvollziehen, weil sie grafisch aufbereitet sind. Alle Stationen, Abhängigkeiten und die involvierten Services sind auf einen Blick erkenntlich – und das nicht nur für erfahrene Programmierer. Programmierkenntnisse sind dafür nicht einmal notwendig.
  • Wir können aktive Prozesse in Echtzeit einsehen und nachvollziehen in welchem Step sich diese befinden
  • Einzelne Prozessinstanzen können zur Fehlerbehebung untersucht werden
  • Prozesse haben unterschiedliche Status, für die wir angepasste Verhaltensmuster definieren können (starte den Prozess neu, warte auf Event, usw.)

Ähnliche Artikel:

mittwald

Mittwald Inside: Ein neues Kundencenter? Aktuelles aus der Produktentwicklung

2019 erschienen die neuen Hosting-Tarife. Nach diesem großen Schritt gehen wir nun noch einen: Wir bauen unser Kundencenter neu. Details gibt's hier.