Integratiepatronen voor ondernemingen
We passen beproefde integratiepatronen toe voor betrouwbare, schaalbare architecturen:
Event-driven architectuur
Event sourcing-patroon
Applicatiestatus opslaan als een reeks events. Voordelen zijn:
- Volledige audittrail van alle statuswijzigingen
- De status opnieuw opbouwen door events opnieuw af te spelen
- Temporele queries (status bekijken op elk moment)
- Ondersteuning voor event-driven microservices
Implementatie: Event Hubs voor ingestie, Event Grid voor routering, Cosmos DB als event store
CQRS (Command Query Responsibility Segregation)
Scheid lees- en schrijfbewerkingen voor betere prestaties:
- Schrijfmodel geoptimaliseerd voor consistentie en validatie
- Leesmodellen gedenormaliseerd voor queryprestaties
- Onafhankelijke schaalbaarheid van lees- en schrijfworkloads
- Verschillende datastores voor commands en queries
Implementatie: Service Bus voor commands, Event Grid voor synchronisatie, SQL/Cosmos voor leesmodellen
Saga-patroon voor gedistribueerde transacties
Beheer langlopende bedrijfsprocessen over meerdere services:
- Choreografie: services publiceren events en reageren op events van andere services
- Orkestratie: een centrale coördinator stuurt de uitvoering van de saga aan
- Compensatie: voltooide stappen ongedaan maken als de saga faalt
- Eventual consistency over gedistribueerde systemen heen
Implementatie: Durable Functions voor orkestratie, Service Bus voor betrouwbare messaging
Een saga in actie
Wanneer één stap van een proces over meerdere systemen faalt, worden de reeds voltooide stappen in omgekeerde volgorde ongedaan gemaakt, zodat geen enkel systeem half bijgewerkt blijft.
Een bestellingssaga met compensatie
Bestelling aanmaken
Order API
Voorraad reserveren
Inventory
Betaling innen
Payments
Verzending boeken
Carrier
Messagingpatronen
- Request-reply: Synchrone communicatie met correlatie van antwoorden
- Publish-subscribe: Berichtdistributie van één naar velen met topics
- Competing consumers: Meerdere workers verwerken berichten uit één queue
- Berichtroutering: Inhoudsgebaseerde routering met filters en subscriptions
- Priority queue: Verwerk berichten met hoge prioriteit eerst
- Claim check: Sla grote payloads extern op en geef een referentie door in het bericht