Blog-event-driven-orchestratie-banner

Event-driven orchestratie: Krijg meer grip op je events!

Steeds meer organisaties willen hun IT-landschap moderniseren door over te stappen op een event-driven architectuur. In plaats van omslachtige point-to-point integraties en grote monolitische systemen, bieden event-driven principes een flexibeler en sneller antwoord op wat er echt gebeurt in de business, en dat alles nagenoeg real-time.

Toch blijft er één uitdaging: hoe behoud je overzicht over al die events en zorg je dat je integratielogica niet versnipperd raakt? Veel organisaties starten met event-choreografie, waarbij elk systeem simpelweg “iets doet” op basis van inkomende events. Dat kan echter snel onoverzichtelijk worden. Onze oplossing is event-driven orchestratie, met een centrale “dirigent” die alles in goede banen leidt en alle stappen zichtbaar maakt. In deze blogpost lees je hoe we dit bij XTi aanpakken, waarom BPMN daarbij kan helpen en hoe je het concreet kunt toepassen.

Waarom event-driven?

In een klassieke integratie worden systemen vaak rechtstreeks (point-to-point) gekoppeld, waarbij elk systeem moet weten hoe het met elk ander systeem moet communiceren. Zo roept systeem A systeem B aan voor een bepaald proces, waarna systeem B systeem C aanroept, enzovoort. Naarmate het aantal systemen groeit, ontstaat er een wirwar van koppelingen (ook wel “spaghetti-integraties” genoemd) waardoor het onderhoud en de uitbreidbaarheid complex en duur worden.

Met een event-driven aanpak doorbreek je dat patroon: systemen publiceren (business) events op een centrale event broker (bijvoorbeeld Kafka), en andere systemen consumeren die. Denk aan een event als “OrderPlaced” of “DocumentApproved”. Je hoeft niet meer expliciet te weten welke systemen allemaal geïnteresseerd zijn in dat event. Je publiceert het, en de rest volgt automatisch via de broker. Zo heb je een duidelijk en schaalbaar publish-subscribe principe:

  • Integratie wordt loose-coupling: Door events (feiten of beslissingen) breed beschikbaar te maken, hoeven systemen niet rechtstreeks met elkaar te integreren. Het is niet meer “Systeem X roept Y aan”, maar “Systeem X publiceert een event en wie wil, luistert”. Dit maakt het gemakkelijker om nieuwe functionaliteiten toe te voegen of oude componenten te vervangen zonder dat je elke integratie moet omgooien.
  • Real-time uitwisseling: Zodra een event plaatsvindt, wordt het gepubliceerd op een event broker. Andere systemen kunnen er direct mee aan de slag en hoeven niet te wachten.
  • Data-driven inzichten: Door data uit verschillende domeinen in events vast te leggen, kun je de volledige “flow” in je organisatie monitoren en, waar nodig bijsturen. Je wilt immers niet dat er ergens een “blackbox” blijft waar je geen zicht op hebt. Met events zorg je dat elk onderdeel van het systeem relevante informatie op een uniforme manier aanlevert. Doordat alle belangrijke gebeurtenissen op één plek samenkomen, heb je een uniforme bron van data. Zo krijg je beter zicht op je processen.

Maar, in een puur event-driven landschap (ook wel “choreografie” genoemd) kan de bedrijfslogica snel versnipperd raken. Omdat elk systeem autonoom beslist op basis van inkomende events, ontbreekt een overkoepelend overzicht. Dit leidt tot een wirwar aan regels en patronen, wat prima werkt zolang het eenvoudig blijft, maar al snel complex kan worden zodra processen in omvang en logica toenemen.

Onze visie: Van choreografie naar orchestratie

Hoe zorg je dat je wél alle voordelen van event-driven werken benut, maar niet verdwaalt in de onderlinge samenhang van processen? Event-driven orchestratie biedt uitkomst. Hierbij is er een centrale “dirigent” in de vorm van een BPM-engine die bepaalt welke acties op welk moment worden uitgevoerd. De event broker blijft als fundament bestaan, maar er komt een extra laag bij die zorgt voor regie en overzicht:

  • Ontvangen van events: Elk systeem publiceert zijn (business) events naar een event broker die vervolgens worden verwerkt door de BPM-engine.
  • Regie in de BPM-engine: De engine luistert naar specifieke inkomende events en beslist de volgende stap in het proces.
  • Commands uitsturen: In plaats van dat het systeem A systeem B rechtstreeks aanroept, stuurt de BPM-engine een gericht commando: “Systeem B, start nu stap X”; of “Systeem C, geef een alert aan de medewerkers”.
  • Logging en monitoring: Alle stappen en statussen worden bijgehouden in de BPM-engine, zodat je precies weet hoe het proces verloopt en waar eventuele bottlenecks zitten.

De onderstaande figuur toont de BPM-engine als centrale “dirigent” bij het uitvoeren van business processen. Vanuit deze engine worden “commands” verstuurd naar de verschillende systemen en worden “events” van die systemen ontvangen om processen te starten of verder te zetten.

Blog-visual-Event-driven-orchestratie-centrale-dirigent

Om de bedrijfsprocessen helder en gestructureerd te visualiseren, maken we gebruik van BPM. Dit helpt zowel IT als business om snel te begrijpen hoe de processen zijn opgebouwd en hoe ze samenhangen. In een event-driven context biedt dit een aantal belangrijke voordelen:

  • Visueel en begrijpelijk: Business en IT praten makkelijker over een proces dan over services en endpoints.
  • Gecentraliseerde besluitvorming: Door alle beslissingen op één centrale plek onder te brengen, kan je snel en flexibel inspelen op veranderende technische en business vereisten. Dit zorgt voor een hogere consistentie in de beslissingen en vermindert het risico op fouten die ontstaan door verspreide logica.
  • Events als first-class citizens: BPM ondersteunt allerlei event types (timer events, message events, signal events, …) waardoor je je event-driven flow expliciet kunt vorm geven.
  • Compensatie en foutafhandeling: In BPM kan je ook het gedrag modelleren voor het geval er iets misloopt.
  • Monitoring en analytics: BPM-engines bieden out-of-the-box dashboards en tools om lopende procesinstanties te volgen en te analyseren.

Hierdoor voorkom je dat de businesslogica verborgen raakt in je code van elk afzonderlijk systeem. De BPM-engine bepaalt welke acties een systeem moet uitvoeren en wanneer, terwijl elk systeem autonoom blijft in zijn eigen domein.

Concreet voorbeeld: “pick-up order” flow

Stel, je wil een nieuwe klantervaring creëren: ergens online een bestelling plaatsen en binnen 30 minuten de bestelling op een fysieke locatie ophalen. De gewenste situatie is dat de klant vlot zijn bestelde product kan afhalen, zonder wachtrijen en zonder teleurstelling dat het nog niet beschikbaar is. Via een event storming sessie kan dit er als volgt uitzien:

Blog-visual-event-driven-orchestratie-event-storming

  1. Pick-up Order Received: Het proces start met het ontvangen van een pick-up order via bijvoorbeeld een webshop. Dit is het initiële event en de trigger van het hele proces.
  2. Pick-up Order Prepared: Het pick-up order wordt voorbereid in het CRM-systeem of in een zoeker-app. De actie “ik heb het gedaan” verwijst naar het moment waarop de bestelling wordt gereed gemaakt voor afhaling.
  3. Customer Arrived: De aankomst van de klant is niet altijd vast te leggen, tenzij hij zich expliciet aanmeldt. Dit event kan optioneel worden geïdentificeerd.
  4. Pick-up Order Not Ready: Indien de klant zich meldt, maar de bestelling nog niet klaar is, wordt dit geconstateerd. Dit kan een trigger zijn om het pick-up order alsnog snel voor te bereiden.
  5. Order Picked up: De klant ontvangt de bestelling. Dit wordt geregistreerd als het moment waarop de afhaling voltooid is.
  6. Customer Feedback Received: Feedback van de klant wordt mogelijk later verzameld via verschillende kanalen zoals bijvoorbeeld social media of een reviewplatform. Dit sluit het proces af.

Deze events kunnen we letterlijk vertalen naar een BPMN-model wat ons het volgende resultaat kan opleveren.

Blog_visual-event-driven-orchestratie-bpm-process

Conclusie

Event-driven orchestratie is een stap vooruit voor organisaties die wel de voordelen van publish-subscribe willen benutten, maar niet willen verzanden in talloze onoverzichtelijke integratiepatronen. Door een centrale proces-gedreven BPM-engine in te zetten behoud je zowel de losse koppeling van events als de controle en zichtbaarheid van een centrale workflow. Je krijgt:

  • Een schaalbaar platform: Systemen blijven loosely coupled, kunnen eenvoudig worden toegevoegd of vervangen.
  • Een transparante workflow: Zowel business als IT heeft door BPMN een helder beeld van de procesflow.
  • Consistence bedrijfslogica: je voorkomt dat essentiële beslissingen overal en nergens zijn verstopt.
  • Duidelijke monitoring: Bottlenecks en fouten zijn meteen zichtbaar, waarop je kan bijsturen waar nodig.

Benieuwd hoe jouw organisatie kan profiteren van event-driven orchestratie met BPM? Aarzel niet om ons even te contacteren.

 

Onderwerpen: BPM

Geïnteresseerd in BPM Engines en Software Development?  Lees onze gids "Business Process Management en BPM Engines onder de loep"

Download gratis jouw e-book
bpm-ebook-cover

Recente artikels