complex business domain to model software that accurately reflects it. It emphasizes collaboration between developers and domain experts to create a Ubiquitous Language. Meet us
code als de business Ubiquitous Language Ondubbelzinnige taal: één begrip = één term, gedeeld door business en IT. Bounded Contexts Onafhankelijke gebieden binnen een groot systeem, elk met eigen model en taal. Vaak in lijn met microservices. (Root) Aggregates Kern-domeinconcepten die consistentie binnen een aggregate garanderen. Value Types Specifieke, onveranderlijke types (bijv. Jaar, Datum, Identiteit). Commands , Queries, Events CRUD: Create, Read, Update, Delete – aanpassingen en leesopdrachten in het domein.
met domein-events (wat gebeurt er in het businessproces?) • Voeg daarna commands, aggregates en policies toe • Doel: inzicht in processen en grenzen (Bounded Contexts)
duidelijk afgebakend gebied binnen het domein met eigen regels en taal. Binnen een Bounded Context zijn begrippen en modellen eenduidig en consistent. De grenzen tussen Bounded Contexts zijn expliciet en bepalen hoe verschillende delen van het systeem met elkaar communiceren.
event storming, waarbij je samen met domeinexperts de grenzen en interacties in kaart brengt. - Voorbeeld: In een webshop zijn “Bestelling” en “Voorraad” vaak aparte Bounded Contexts, elk met hun eigen regels en modellen.
Domain- Driven Design (DDD) that acts as the sole entry point for all data modifications, interactions, and data changes within that logical boundary Meet us
actie kan worden uitgevoerd (bijv. stock > 0) Maak een even en hou deze bij als Transactie. (bijv. StockRemoved(-2, "stilo")) Pas status van aggregate aan
de repo- eventueel worden hier validaties en rechten afgeandeld • Get/Create Aggregate • Run Command • Foutafhandeling • Store data Hier worden vooral projecties gedaan. Of policies (act on external event)
Storming Begin klein. Met kleine projecten Bouw een eerste bounded context Hoe begin je met DDD? Betrek business Workshops Event Storming Bounded context
business • Geen duidelijke grenzen tussen contexten • Over-engineering bij kleine projecten • Niet iteratif blijven verbeteren Valkuilen & Tips • Begin klein, evolueer iteratief • Werk nauw samen met business • Blijf verbeteren
Slidesgo, including icons by Flaticon, and infographics & images by Freepik questions? [email protected] https://speakerdeck.com/kimvanrenterghem/domain-driven-design Thanks! Please keep this slide for attribution