Zakelijke complexiteit in een microservice aanpakken met DDD- en CQRS-patronen

Aanbeveling

Deze inhoud is een fragment uit het eBook, .NET Microservices Architecture for Containerized .NET Applications, beschikbaar op .NET Docs of als een gratis downloadbare PDF die offline kan worden gelezen.

.NET Microservices Architectuur voor Gecontaineriseerde .NET Toepassingen eBook omslagthumbnail.

Ontwerp een domeinmodel voor elke microservice of gebonden context die inzicht geeft in het bedrijfsdomein.

Deze sectie richt zich op geavanceerdere microservices die u implementeert wanneer u complexe subsystemen moet aanpakken of microservices die zijn afgeleid van de kennis van domeinexperts met steeds veranderende bedrijfsregels. De architectuurpatronen die in deze sectie worden gebruikt, zijn gebaseerd op domeingestuurd ontwerp (DDD) en CQRS-benaderingen (Command and Query Responsibility Segregation), zoals geïllustreerd in afbeelding 7-1.

Diagram met het vergelijken van patronen voor externe en interne architectuur.

Verschil tussen externe architectuur: microservicepatronen, API-gateways, tolerante communicatie, pub/sub, enzovoort, en interne architectuur: gegevensgestuurd/CRUD, DDD-patronen, afhankelijkheidsinjectie, meerdere bibliotheken, enzovoort.

Afbeelding 7-1. Architectuur van externe microservices versus interne architectuurpatronen voor elke microservice

De meeste technieken voor gegevensgestuurde microservices, zoals het implementeren van een ASP.NET Core Web API-service of het beschikbaar maken van Swagger-metagegevens met Swashbuckle of NSwag, zijn echter ook van toepassing op de geavanceerdere microservices die intern worden geïmplementeerd met DDD-patronen. Deze sectie is een uitbreiding van de vorige secties, omdat de meeste eerder beschreven procedures hier of voor elk soort microservice ook van toepassing zijn.

In deze sectie vindt u eerst informatie over de vereenvoudigde CQRS-patronen die worden gebruikt in de referentietoepassing eShopOnContainers. Later krijgt u een overzicht van de DDD-technieken waarmee u algemene patronen kunt vinden die u in uw toepassingen opnieuw kunt gebruiken.

DDD is een groot onderwerp met een uitgebreide set resources voor leren. U kunt beginnen met boeken zoals Domain-Driven Design van Eric Evans en extra materialen van Vaughn Vernon, Jimmy Nilsson, Greg Young, Udi Dahan, Jimmy Bogard en vele andere DDD/CQRS-experts. Maar u moet vooral leren hoe u DDD-technieken kunt toepassen op de gesprekken, whiteboarding en domeinmodelleringssessies met de experts in uw concrete bedrijfsdomein.

Aanvullende bronnen

DDD (Domain-Driven ontwerp)
DDD-boeken
DDD-training