5. DDD in a Nutshell
• DDD is not a framework, but it does have a set of building blocks or concepts that
you can incorporate into your solution:
• The Ubiquitous language
• The Domain Model
○ Entities
○ Value objects
○ Aggregates and aggregate roots
• Domain services
• Application services
• Repository
• Onion Layering
• Event Sourcing
5
6.
7.
8.
9. DDD key principles
• Domain Experts
○ They are the ones who carry the knowledge which defines the problem and what the output of the
software should be in order to be considered a complete solution, and they can define acceptance
tests for this software
• Ubiquitous Language
○ When developing software it is important that the domain experts and the developers would create a
language of expressions and common phrases that define the system's model and interactions.
○ Bounded to context
• Bounded Contexts
○ Bounded contexts are, in their hearts, the application of the Separation of Concerns principle on the
domain level.
○ Enforces the Model integrity
○ They are to be designed
○ In close relationship with the Ubiquitous Language -> Linguistic / semantic boundaries
○ Ownership boundaries, physical boundaries
9
15. Domain Distillation Techniques
• Core Domain
• Supporting Domains
• Generic Subdomains
○ Generic Subdomains are the parts of your system which are challenging and required but they are not the
core of the domain.
■ Using of The Shelf Software
■ Using a Generic/Standardized Domain Model:
■ Outsourcing The Subdomain
■ In-house development
15
19. Invite the right people
Provide unlimited modeling space
Explore the domain starting from Domain
Events
Explore the origin of Domain Events
Look for Aggregates
Sketching User Personas
Sketching Key Acceptance Tests
26. Hexagonal Architecture
• Conduct Event Storming
• Conduct Impact Mapping / Story
Mapping
• Do Wardley maps
• Design and Code the Models and Sub
Models
• Put an Hexagonal Architecture in place
• Release small micro services & front
end
• Put ACL in place = Anti Corruption
Layers
26
Core
Model
Event App Service
Event Controller
Inner
Outer
Event Repository
(Mongo) Repository
DB
Regulated
Domain