Een business event is een gebeurtenis, het ontstaan van een situatie, waarop de organisatie vanuit de aan haar gestelde verantwoordelijkheden, taken en doelstellingen moet of wil reageren. Een business event wordt vastgelegd in een bericht. Door dergelijke berichten als uitgangspunt te nemen in het ontwerp van de systeemarchitectuur zijn informatiesystemen te ontwikkelen met tot nu toe ongekende mogelijkheden. Om zover te komen is echter wel een verandering van de manier van denken van de ontwerper vereist.
Een architectuur, waarbij de informatiesystemen real-time reageren op events levert een natuurgetrouwe benadering op van de werkelijkheid en is minder complex dan traditionele procedurele benaderingen. Essentieel in dit model is dat informatieverwerkende (deel)systemen (services, applicaties) niet meer direct met elkaar gekoppeld zijn, maar slechts reageren op meldingen van elkaar. Deze meldingen betreffen relevante toestandsveranderingen in het bedrijfsproces. Bijvoorbeeld: een toegangspoortje op een station hoeft niet aan een specifieke applicatie gekoppeld te zijn, maar meldt slechts het feit dat reiziger x op locatie y op tijdstip z het poortje is gepasseerd. Alle informatiesystemen die daarin geïnteresseerd zijn kunnen deze melding oppakken en de gegevens autonoom en op hun eigen wijze verwerken. Als nieuwe toegangspoortjes worden geplaatst, maakt dat voor de informatiesystemen geen verschil. Morgen kunnen er andere, meer of minder informatiesystemen zijn dan vandaag; wijzigingen zijn in dit mechanisme min of meer plug-and-play door te voeren. Overige informatiesystemen, inclusief de software in de toegangspoortjes, merken niets van deze wijzigingen.
De verzameling berichten over business events is een afbeelding van de actuele toestand van het bedrijf. Dit biedt nieuwe dimensies voor business intelligence: er kunnen real-time analyses worden uitgevoerd op actuele berichtstromen, zonder dat de gegevens eerst in een database of datawarehouse opgeslagen hoeven te zijn. Door de business events te loggen kan de historische dynamiek van het gehele bedrijf op ieder moment worden nagespeeld in een simulatiemodel. Dit biedt mogelijkheden om bijvoorbeeld bottlenecks in bedrijfsprocessen op te sporen en op te lossen. Tenslotte biedt deze benadering mogelijkheden voor nieuwe businessmodellen gebaseerd op een ‘marktplaats’ van publicaties over business events: afnemers van de gegevens betalen aan de aanbieders. Aanbieders kunnen ook externe partijen zijn die in concurrentie kunnen worden geplaatst.
De toepassing van op events gebaseerde real-time systemen is niet nieuw. In industriële procesbesturing wordt gebruik gemaakt van een zogenaamde ‘veldbus’ om de complexiteit beheersbaar te houden. ‘Veldbus’ is de algemene term voor een digitaal datacommunicatienetwerk. Met behulp van een veldbus kunnen sensoren (detectieapparatuur) en actuatoren (aan te sturen apparaten) aan elkaar worden gekoppeld door middel van informatie over events. Sensoren detecteren events en actuatoren reageren op gepubliceerde informatie over deze events zonder dat de sensoren en actuatoren kennis over elkaar hebben. Het geheel wordt bestuurd door middel van een besturingseenheid. De software op de besturingseenheid verwerkt de informatie van de sensoren en zet deze om in de aansturing van een handeling door een actuator.
Een ander voorbeeld van het toepassen van real-time systemen zijn de ‘interrupts’ van het toetsenbord of de muis op het besturingssysteem van een computer. Nog een ander voorbeeld is het toepassen van routines als OnError in hogere programmeertalen en de OnMouseOver en OnButtonClick in visuele programmeertalen als Visual Basic en JavaScript.
Al deze systemen zijn event-gedreven om complexiteit uit de systemen weg te nemen. Er hoeven door de ontwikkelaar geen ingewikkelde geneste polling-loops en DoCase-constructies meer gebouwd te worden, waardoor de systemen in complexiteit afnemen. De systemen krijgen hiermee een plug-and-play karakter.
Technologie
Technologische ontwikkelingen op het gebied van messaging hebben momenteel een revolutionair karakter in een convergerende markt. Met name die convergentie, waarbij de gehele it-industrie zich steeds meer conformeert aan gemeenschappelijke standaarden op applicatieniveau, is een nieuwe mijlpaal in de it-geschiedenis en stimuleert de ontwikkeling van nieuwe technieken. De moderne technologie op het gebied van applicatie-overstijgende messaging biedt een volledig nieuwe dimensie met tot dusver ongekende mogelijkheden tegen relatief lage kosten.
Zo bestaat er nu (vergelijkbaar met de veldbus) de enterprise service bus (ESB). Dit is een op standaarden gebaseerde infrastructuur die – metaforisch – beschouwd kan worden als een ‘global data space’, waarin informatiesystemen hun berichten kunnen plaatsen en afnemen. Dit alles is locatieonafhankelijk; de ESB maakt gebruik van het netwerk om zich gedistribueerd te manifesteren en wordt centraal beheerd. De introductie van de enterprise service bus maakt event-gedreven, op open standaarden gebaseerde real-time systemen mogelijk op het niveau van een bedrijfsproces. Juist op dit niveau zal deze zogenaamde event-driven architecture (EDA) in combinatie met de breed geaccepteerde web services technologie leiden tot krachtige innovatieve toepassingen.
EDA wordt geïmplementeerd met behulp van het ‘publish-and-subscribe messaging’ patroon. Dit patroon ondersteunt uitwisseling van gegevens tussen voor elkaar anonieme softwarecomponenten. Een belangrijk kenmerk van een EDA is dat berichten technologieonafhankelijk en real-time bedrijfsbreed op alle locaties beschikbaar zijn (global data space). Publishers (sources) sturen gegevens naar een ‘global data space’ en subscribers (sinks) nemen deze gegevens af uit de ‘global data space’.
Batchgeoriënteerde systemen zijn van nature geschikt om in een dergelijk model te implementeren. Dit heeft te maken met het feit dat batchapplicaties voornamelijk documentgeoriënteerd en asynchroon gegevens uitwisselen met elkaar in de vorm van records in batchbestanden. Schrijven en lezen van records is analoog aan ‘publish’ en ‘subscribe’. Bij de overgang naar een moderne applicatieomgeving kan men maximaal blijven profiteren van bestaande batchgeoriënteerde legacy-systemen, die via een web services wrapping op een moderne real-time applicatieomgeving worden aangesloten.
Mind-shift
Om event-gedreven architecturen te kunnen realiseren is een omschakeling van het synchrone procedureel gerichte denken naar een asynchrone op events gerichte denkwijze van de ontwerper vereist. Dit is niet altijd even gemakkelijk, blijkt in de praktijk.
Een EDA is gebaseerd op asynchrone communicatie tussen softwarecomponenten. Tot dusver was het ontwerpen van bedrijfsapplicaties voornamelijk gebaseerd op synchrone interactie tussen de softwarecomponenten. De componenten communiceerden met elkaar in de vorm van ‘request-and-reply’ mechanismen en ‘call stacks’. Ook in de moderne service oriented architecture (soa) omgevingen is het zogenaamde ‘aanroepen’ van een dienst nog steeds het dominante patroon. In een EDA worden echter geen diensten aangeroepen, maar berichten gepubliceerd. Het initiatief ligt dus niet bij de component die gegevens nodig heeft (en opvraagt bij een leverende component), maar bij de component die de gegevens levert.
Het is van belang dat de ontwerper zijn aandacht richt op de business events en de te definiëren functies als een afgeleide daarvan beschouwt. Daarbij moet de ontwerper steeds denken vanuit het perspectief dat de leverancier van het bericht (gegevens over het business-event) de initiator is. Het proces bestaat uit de levenscyclus van het bericht. Autonome ‘stateless’ functies reageren op het bericht, veranderen de status van het bericht, wat leidt tot het genereren van nieuwe events. Dit staat in contrast met het denken vanuit het perspectief van een functionele decompositie en persistente gegevensopslag, waaruit een mechanisme van aanroepen van functies ontstaat. Feitelijk zijn deze beide benaderingen ‘inversen’ van elkaar.
Om in de uitwerkingen van het ontwerp weloverwogen beslissingen te kunnen nemen over de toepassing van ‘publish-and-subscribe’ en waar eventueel een ‘request-and-reply’ patroon adequaat is, is een niet triviale verandering van manier van denken bij de ontwerper vereist. Pas als de verantwoordelijke ontwerpers zich de asynchrone denkwijze hebben eigengemaakt zal de business ten volle kunnen profiteren van de ongekende mogelijkheden die dit concept biedt.
Jack van Hoof
Jack van Hoof
De auteur werkt momenteel als enterprise integratie architect bij de Nederlandse Spoorwegen. Hij adviseert over de toepassing van moderne technologieën bij het tot stand brengen van integrale organisatiebrede applicatiearchitecturen. Hij heeft sinds 1977 diepgaande kennis en praktijkervaring opgebouwd op alle aspecten en niveaus van systeemontwikkeling.