Wat is event-driven architecture en wat zijn de voordelen?
Leestijd: ongeveer 7 min
Onderwerpen:
Wist je dat we iedere dag 2,5 miljard miljard (dat zijn maar liefst 18 nullen) bytes aan gegevens produceren? Om al deze gegevens te verwerken en bij te houden, hebben organisaties behoefte aan flexibele toepassingen die zich kunnen aanpassen aan veranderingen, gebruikers betrokken houden en directe inzichten bieden.
In dit artikel bespreken we hoe gebeurtenisgesturde architectuur, ofwel event-driven architecture, je teams kan helpen bij het ontwikkelen van toepassingen om gegevens bij te houden en te bundelen.
Wat is event-driven architecture?
Gebeurtenisgestuurde architectuur (Engels: event-driven architecture of EDA) is een toepassingsontwikkelingsontwerp dat wordt gebruikt om in real time of zo snel mogelijk daarna op een 'gebeurtenis' te reageren. Denk bijvoorbeeld aan het plaatsen van een bestelling op een e-commercewebsite. De gebeurtenis bepaalt welke acties er door een dienst moeten worden uitgevoerd nadat de gebeurtenis heeft plaatsgevonden.
Wat is event-driven?
Om te zorgen dat de gebeurtenis de juiste reactie activeert, volgt een event-driven systeem drie belangrijke componenten: gebeurtenisproducenten, gebeurtenisrouters en gebeurtenisconsumenten.
Het werkt ongeveer zo:
Gebeurtenisproducent: Een klant die een bestelling plaatst op een e-commercewebsite maakt een 'kassa'-gebeurtenis aan die naar een gebeurtenisrouter wordt gestuurd.
Gebeurtenisrouter: Maakt de gebeurtenis beschikbaar voor gebeurtenisconsumenten die zich abonneren op gebeurtenissen van het type 'kassa'.
Gebeurtenisconsumenten: Diensten zoals 'voorraad' en 'communicatie'.
De dienst 'voorraad' controleert of het artikel voorradig is. Als het artikel op voorraad is, wordt er een gebeurtenis aangemaakt en geconsumeerd door de 'communicatie'-dienst, die een bericht verzendt om de klant te laten weten dat de bestelling wordt verwerkt en dat er nog een bericht zal volgen wanneer de bestelling wordt verzonden.
Wanneer het item niet voorradig is, laat de 'communicatie'-dienst de klant weten dat hij kan wachten tot het artikel op voorraad is of de bestelling kan annuleren.
Wanneer het artikel wordt verzonden, maakt de 'verzend'-dienst een gebeurtenis aan die wordt geconsumeerd door de 'communicatie'-dienst, die dan weer een bericht verzendt met informatie zoals het traceernummer van het pakket, de verzendingsdatum en de datum waarop het pakket naar verwachting wordt geleverd.
Wat zijn de voordelen van event-driven architecture?
Event-driven architecture heeft meerdere voordelen, zoals:
Losjes verbonden diensten: Gebeurtenisproducenten en -consumenten zijn niet gekoppeld. De producent weet niet welke consumenten er wachten op de gebeurtenissen die hij aanmaakt. Hij levert de gebeurtenis simpelweg aan een router, waar consumenten het type gebeurtenissen waarop ze geabonneerd zijn kunnen vinden.
Omdat de producenten en consumenten zich niet bewust zijn van elkaar en niet van elkaar afhankelijk zijn, is er geen falend knooppunt. Wanneer er nu één dienst uitvalt, blijven de andere werken, zodat de gebeurtenissen worden geconsumeerd en verwerkt zoals verwacht.
Schaalbaar: Omdat de producenten en consumenten elkaar niet kennen is er geen point-to-point-integratie. Het is nu veel gemakkelijker om nieuwe diensten aan het systeem toe te voegen en daarbij storingen te voorkomen.
Agile ontwikkeling: Omdat je eenvoudig nieuwe diensten kunt toevoegen aan Event Driven Architecture-systemen, past de ontwikkeling goed bij agile-omgevingen. De gebeurtenisrouter is een bemiddelaar tussen de diensten, die gebeurtenissen filtert en doorstuurt naar consumenten.
Dit betekent dat je geen speciale code hoeft te schrijven die gebeurtenissen zoekt, filtert en naar consumenten verzendt. Uiteindelijk versnelt dit de ontwikkeling en stelt het je in staat snel nieuwe diensten toe te voegen, zonder een te grote impact op bestaande componenten.
Lagere kosten: Event-driven architecture-systemen zijn push-gebaseerd, wat betekent dat dingen op aanvraag plaatsvinden en dat het systeem de servers niet continu controleert op gebeurtenissen. Controleren en verwerken op aanvraag verbruikt minder netwerkbronnen en vermindert zo de totaalkosten.
Respons en analyse in real time: Toepassingen reageren in real time op veranderingen, waarbij ze gebruik maken van actuele en historische gegevens om besluiten te nemen. Dit type respons helpt het systeem om veiligheidsrisico's in een oogwenk te voorspellen en te stoppen, en zo toeleveringsketens te automatiseren en optimaliseren.
Wanneer moet je gebeurtenisgestuurde architectuur gebruiken?
Als je wilt dat je toepassingen compatibel zijn met verschillende systemen en subsystemen, is het tijd om na te denken over event-driven programmering om de volgende zaken aan te pakken:
Gegevensreplicatie over verschillende accounts en regio's: Event-driven architecture werkt goed voor bedrijven die op verschillende geografische locaties werken. Gebeurtenisrouters kunnen gegevens versturen naar verschillende systemen, in verschillende regio's en op verschillende accounts. Zo blijft het systeem gecoördineerd en kunnen je teams onafhankelijk van andere teams nieuwe apps en diensten ontwikkelen en implementeren.
Fan-out en parallelle verwerking: Gebruik event-driven architecture om een enkele gebeurtenis te verspreiden over meerdere systemen die op de gebeurtenis moeten reageren. Op deze manier hoeven je teams geen speciale code te schrijven om de gebeurtenis naar elke consument door te sturen. Ieder systeem kan de gebeurtenis op hetzelfde moment, maar voor verschillende doeleinden, verwerken.
Monitoring van de status van middelen en waarschuwingen: EDA's kunnen middelen voor je monitoren en meldingen versturen wanneer de status verandert, wanneer er afwijkingen zijn en wanneer onderdelen worden bijgewerkt.
Integratie van heterogene systemen: Gebruik gebeurtenisrouters om informatie te delen met systemen die verschillende technologiestacks gebruiken.
Scenario's voor use cases van event-driven architecture
Misschien wil je EDA-ontwerpen implementeren voor de volgende scenario's:
Financieel
Transacties controleren op fraude. Gebruik kunstmatige intelligentie (AI) en machine learning (ML) om de kans op fraude te voorspellen en vinden.
Gezondheidszorg
Gebeurtenissen kunnen meldingen aanmaken om medische apparatuur preventief te onderhouden. Bied proactieve, gepersonaliseerde zorg, gebaseerd op realtime gegevens die worden verzameld met draagbare bewakingsapparatuur.
Toeleveringsketen
Krijg volledig inzicht, van het plaatsen van een bestelling tot de verzending, met gebeurtenissen die bij iedere stap in het proces worden aangemaakt. Houd de vraag van de klant bij en weet hoeveel voorraad je in je magazijn en winkels hebt.
Internet of Things (IoT)
Intelligente 'dingen' weten nooit met welk apparaat ze moeten werken. Intelligente gloeilampen, bijvoorbeeld, moeten een gebeurtenis zoals 'inschakelen' begrijpen en hierop reageren, of de gebeurtenis nu van AI, van handmatige invoer in een app of van een timer komt.
Omnichannel
Monitor klantgedrag. Haal inzichten uit de verzamelde gegevens om je te helpen direct op de behoeften van de klant te reageren.
Aan de slag gaan
Bij veel bedrijven vereist de implementatie van een event-driven architecture-systeem een complete herziening van bestaande systemen en toepassingen. EDA's helpen organisaties flexibeler te worden, te profiteren van cloudtechnologieën en zich voor te bereiden op nieuwe technologieën. Een complete herziening kan tijdrovend en erg duur zijn. Maar er zijn een aantal punten op hoog niveau waar je mee kunt beginnen om aan de slag te gaan.
Stap 1: Maak bestaande systemen gebeurtenisreactief
Breek door de muren die zijn ontstaan vanwege de verschillende bestaande systemen die niet of niet goed met elkaar communiceren. Codeer ze zodat ze gebeurtenissen in real time kunnen publiceren. Dit elimineert de noodzaak om aangepaste API's te coderen om gegevens door te sturen.
Maak de gegevens vrij door veranderingen en andere gebeurtenissen onmiddellijk zichtbaar te maken voor de systemen en toepassingen die van deze gebeurtenissen op de hoogte moeten zijn.
Stap 2: Moderniseer je huidige toepassingsomgeving
Hybride en multicloudarchitecturen worden steeds populairder vanwege hun flexibiliteit. Dit zegt Santosh Rao, Principal Product Management, AWS RDS/Aurora bij Amazon Web Services:
'Hybride architecturen worden de voetafdrukken die organisaties in staat stellen verder te reiken dan hun datacentra, richting clouddiensten over meerdere platforms.'
Dus je hebt een manier nodig om gebeurtenissen en gegevens te verplaatsen over meerdere systemen die tegelijk worden uitgevoerd. Daarnaast moet je de werklast verplaatsen naar de systemen die op dit moment de beste prestaties en beschikbaarheid bieden.
Moderniseer je toepassingsomgeving om te profiteren van cloudinfrastructuur. Integreer bijvoorbeeld met SaaS-toepassingen die in de cloud verkrijgbaar zijn om de functies waarin je geïnteresseerd bent te ondersteunen.
Stap 2: Waarschuwingen en informeren
Wanneer je toepassingen event-driven zijn, zitten je gegevens niet langer vast in gesloten of silosystemen. Met gebeurtenisproducenten kun je communiceren met meerdere teams, zakenpartners, leveranciers en klanten. Zo maak je een einde aan extractie-, transformatie- en laadprocessen (ETL) en constante controle van entiteiten die geïnteresseerd zijn in je gegevens. Dit maakt netwerkbandbreedte en CPU-processen vrij, en geeft consumenten een respons die dichter bij realtime ligt.
Visualiseer het
Om te beginnen moet je visualiseren en in kaart brengen wat je probeert te bereiken. Gebruik de tools van Lucid om samen te werken, ideeën vast te leggen, en architecturen en bedrijfsprocessen te visualiseren.
Lucidspark, een webgebaseerd virtueel whiteboard, brengt teamleden overal ter wereld samen om te brainstormen, samen te werken en ideeën om te zetten in actiepunten.
Gebruik Lucidchart om dynamische visuals aan te maken van bedrijfsprocessen, workflows, grafieken, architecturen en alles wat je kan helpen een inzicht en overzicht te krijgen van de systemen die je wilt implementeren. Alle Lucidchart-documenten worden opgeslagen in de cloud, zodat teams ze in real time kunnen openen en kunnen samenwerken, waar ze zich ook bevinden en op elk moment van de dag.
Maak een diagram van je gebeurtenisgestuurde architectuur met onze aanpasbare processjabloon voor gebeurtenisbeheer.
Krijg inzicht in je infrastructuur met LucidchartOver Lucidchart
Lucidchart, een slimme diagramapplicatie in de cloud, is een kernonderdeel van Lucid Software's pakket voor visuele samenwerking. Met deze intuïtieve cloudgebaseerde oplossing kunnen teams in realtime samenwerken om flowcharts, mockups, UML-diagrammen, kaarten van customer journeys en meer te maken. Lucidchart stuwt teams vooruit om sneller aan de toekomst te bouwen. Lucid is trots op zijn diensten aan belangrijke bedrijven over de hele wereld, waaronder klanten als Google, GE en NBC Universal, en 99% van de Fortune 500. Lucid werkt samen met brancheleiders, waaronder Google, Atlassian en Microsoft. Sinds de oprichting heeft Lucid talrijke onderscheidingen ontvangen voor zijn producten, bedrijfsvoering en werkcultuur. Ga voor meer informatie naar lucidchart.com.