Event-driven architectuur is een manier om software te bouwen waarbij onderdelen reageren op gebeurtenissen op het moment dat ze plaatsvinden, in plaats van elkaar steeds te bevragen op wijzigingen. Zodra er iets gebeurt, een bestelling wordt geplaatst, een betaling komt binnen, stuurt het systeem een event uit, en elk deel dat het aangaat kan meeluisteren en zelf reageren.

Stel je een krantenabonnement voor. Je belt de uitgever niet elke ochtend om te vragen of er een nieuwe editie is, hij valt gewoon op je deurmat zodra hij gedrukt is. Event-driven systemen werken net zo: een webhook of bericht komt binnen op het moment dat er iets verandert, en elke abonnee reageert op zijn eigen tempo. Dit past van nature bij microservices, waar veel kleine services losjes gekoppeld maar toch van elkaar op de hoogte moeten blijven.

De kracht is flexibiliteit: je kunt een nieuwe reactie toevoegen, bijvoorbeeld bij elke aankoop een loyaliteitsmail sturen, zonder het deel dat de verkoop deed aan te raken. Het vlakt ook pieken af. Een stortvloed aan orders kan zich opstapelen in een queue en in een rustig tempo leeglopen, in plaats van een service te overspoelen die rechtstreeks werd aangeroepen.

De prijs is dat de flow lastiger te volgen is, want één event kan stilletjes meerdere dingen tegelijk in gang zetten. Events kunnen ook in de verkeerde volgorde of dubbel binnenkomen, dus de afhandelaars moeten daarop gebouwd zijn en niet uitgaan van een keurige reeks. Sla je dat over, dan krijg je dubbele mails of een dubbel afgeschreven bedrag, en dat is hier de klassieke valkuil.

Bij TopDevs grijpen we naar event-driven architectuur als een systeem veel bewegende delen heeft die in realtime moeten reageren, zodat het kan groeien zonder een kluwen te worden.