Event-driven architectuur
Krijg inzicht in de principes van event-driven architectuur en in hoe events kunnen zorgen voor losse koppeling tussen services.
Event-driven architectuur is een gratis Enterprise-backend-API's met NestJS-les op CoddyKit. Dit is les 3 van 3. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Enterprise-backend-API's met NestJS. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Enterprise-backend-API's met NestJS bevat in totaal 3 lessen.
Introductie tot gebeurtenisgestuurde architectuur
Welkom bij Event-Driven Architecture (EDA)! Dit krachtige ontwerppatroon helpt bij het bouwen van flexibele en schaalbare systemen.
In EDA communiceren services indirect door gebeurtenissen uit te sturen en daarop te reageren, in plaats van directe verzoeken te doen.
Waarom EDA gebruiken?
EDA biedt verschillende belangrijke voordelen voor moderne applicaties:
- Losse koppeling: Services hoeven de interne werking van elkaar niet te kennen.
- Schaalbaarheid: Je kunt eenvoudiger nieuwe afnemers toevoegen zonder producenten te wijzigen.
- Veerkracht: Als één service uitvalt, kunnen andere vaak doorgaan met verwerken.
- Responsiviteit: Acties kunnen meerdere parallelle reacties activeren.
Kerncomponenten van EDA
EDA draait om drie hoofdcomponenten:
- Gebeurtenissen: Meldingen dat er iets belangrijks is gebeurd.
- Gebeurtenisproducenten: Services die gebeurtenissen genereren en publiceren.
- Gebeurtenisafnemers: Services die zich abonneren op gebeurtenissen en daarop reageren.
Zie het als een krant: de redacteur (producent) publiceert nieuws (gebeurtenissen) en lezers (afnemers) pakken eruit wat hun interesseert.
Wat is precies een gebeurtenis?
Een gebeurtenis is een registratie van een belangrijke gebeurtenis of een 'feit' binnen je systeem. De gebeurtenis is onveranderlijk: zodra deze is aangemaakt, kan ze niet meer worden gewijzigd.
Gebeurtenissen bevatten doorgaans gegevens over wat er is gebeurd, maar niet over hoe je erop moet reageren. Het zijn feiten in de verleden tijd.
Voorbeeld van gebeurtenisgegevens
Hier zie je een eenvoudig voorbeeld van hoe de gegevens van een gebeurtenis eruit kunnen zien. Het beschrijft een gebeurtenis van het type 'User Registered':
{
"eventType": "UserRegistered",
"payload": {
"userId": "uuid-1234",
"email": "user@example.com",
"timestamp": "2023-10-27T10:00:00Z"
}
}Deze gebeurtenis stelt eenvoudigweg een feit vast: een gebruiker is op een specifiek tijdstip geregistreerd, met specifieke gegevens.
Gebeurtenisproducenten in actie
Een producent van gebeurtenissen is een service die een actie uitvoert en vervolgens een gebeurtenis publiceert om aan te geven dat die actie heeft plaatsgevonden.
Deze service houdt zich niet bezig met welke andere services (eventueel) naar deze gebeurtenis luisteren of erop reageren. Deze aanpak van ‘versturen en vergeten’ leidt tot een losse koppeling.
Consumenten van gebeurtenissen reageren
Een consument van gebeurtenissen is een service die zich abonneert op specifieke typen gebeurtenissen waarin deze geïnteresseerd is.
Wanneer een gebeurtenis waarop de service is geabonneerd wordt gepubliceerd, ontvangt de consument deze en voert hij als reactie zijn eigen specifieke acties uit.
Een e-mailservice kan bijvoorbeeld een gebeurtenis 'UserRegistered' verwerken om een welkomstmail te verzenden.
De rol van een gebeurtenisbroker
Vaak bevindt zich een gebeurtenisbroker (of berichtenwachtrij) tussen producenten en consumenten.
Deze fungeert als tussenpersoon: hij ontvangt gebeurtenissen betrouwbaar van producenten en bezorgt ze bij geïnteresseerde consumenten. Zo gaan gebeurtenissen niet verloren en wordt schalen mogelijk.
Eenvoudige demonstratie van een gebeurtenissysteem
Dit eenvoudige Java-voorbeeld demonstreert het basisidee van het uitsturen en verwerken van gebeurtenissen binnen één applicatie. Stel je voor dat verschillende onderdelen van je systeem deze luisteraars zijn!
public class EventSystem {
interface EventListener {
void onEvent(String eventType, String eventData);
}
static class EventEmitter {
private java.util.Map<String, java.util.List<EventListener>> listeners = new java.util.HashMap<>();
public void on(String eventType, EventListener listener) {
listeners.computeIfAbsent(eventType, k -> new java.util.ArrayList<>()).add(listener);
}
public void emit(String eventType, String eventData) {
System.out.println("Emitting event: " + eventType + "\nData: " + eventData);
listeners.getOrDefault(eventType, java.util.Collections.emptyList())
.forEach(listener -> listener.onEvent(eventType, eventData));
}
}
public static void main(String[] args) {
EventEmitter emitter = new EventEmitter();
emitter.on("userCreated", (type, data) -> {
System.out.println("\nListener 1 received: " + type);
// Imagine sending a welcome email
});
emitter.on("userCreated", (type, data) -> {
System.out.println("Listener 2 received: " + type);
// Imagine updating analytics
});
emitter.emit("userCreated", "{ userId: 101 }");
emitter.emit("productViewed", "{ productId: P001 }");
}
}Test je begrip
Welke van de volgende opties zijn belangrijke voordelen van een gebeurtenisgestuurde architectuur?
Samenvatting: gebeurtenisgestuurde architectuur
Je hebt nu een goed beeld van gebeurtenisgestuurde architectuur!
- EDA gebruikt gebeurtenissen voor indirecte communicatie.
- Deze architectuur bevordert losse koppeling, schaalbaarheid en veerkracht.
- Belangrijke rollen zijn producenten van gebeurtenissen, consumenten van gebeurtenissen en vaak een gebeurtenisbroker.
Dit patroon is fundamenteel voor het bouwen van robuuste, gedistribueerde systemen, vooral microservices.
Leer TypeScript met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 20
- Lessen
- 76
Veelgestelde vragen
Is de les “Event-driven architectuur” gratis?
Ja — de volledige tekst van “Event-driven architectuur” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Enterprise-backend-API's met NestJS wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Enterprise-backend-API's met NestJS bevat in totaal 3 lessen.
Wat leer ik in “Event-driven architectuur”?
Krijg inzicht in de principes van event-driven architectuur en in hoe events kunnen zorgen voor losse koppeling tussen services. Je oefent met Enterprise-backend-API's met NestJS door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Enterprise-backend-API's met NestJS te beginnen?
Ervaring vooraf is niet nodig. Enterprise-backend-API's met NestJS op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 3.
Hoe lang duurt de les “Event-driven architectuur”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Enterprise-backend-API's met NestJS?
Ja. Elke les over Enterprise-backend-API's met NestJS bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Monorepo versus microservices
- Overzicht van het CQRS-patroon
- Event-driven architectuur