Concepts
Ubiquitous language
- use the same terms in code as the user use
- have common language between delivery team and actual people (aka customers)
- helps to understand business by logic
- helps with communication
- use real-world language in code
Aggregates
- a representatino of real domain concept
- something like an
Order
, anInvoice
,Stock Item
- something like an
- aggregates typically have an information cycle around them
- in general
- aggregate as something that has
- state
- identity
- information cycle
- that will be managed as part of the system
- aggregate as something that has
- aggregates can have relationships to other aggregates
Bounded context
- a larger organizational boundary
- within it explicit responsibilities need to be carried out
- bounded contexts hide implementation details ()
- bounded contexts contain
1-n
aggregates- some aggregates may be exposed outside the bounded context
- others may be hidden internally
Event Storming
- collaborative brainstorming exercise designed to help design a domain model
- invented by Alberto Brandolini
Boundaries between microservices
- There are some factors when defining clear boundaries between Microservices
- volatility
- data
- also with concern to security
- technology
- organizational
- Layering Inside vs Layering Outside
Resources
- 2024-04-18 ◦ Domain Driven Design - Awesome Software Architecture
- 2024-02-01 ◦ Warum spricht jeder über DDD?
- 2024-02-01 ◦ DDD Beyond the Basics: Mastering Aggregate Design | by Mario Bittencourt | SSENSE-TECH | Medium
- 2024-02-01 ◦ Introduction - Domain Driven Microservices on AWS in Practice
- 2024-02-01 ◦ GitHub - ddd-crew/free-ddd-learning-resources: A collection of resources for learning DDD. All are free to access.
- 2024-02-01 ◦ GitHub - AlexNek/ddd-for-developers: Domain Driver Design - Overview for Software Developers
- 2023-05-11 ◦ Domain-Driven Design: Bridging the Gap Between Business and Technology
- 2023-03-13 ◦ A gentle introduction to Domain Driven Design | by The Lone Architect | Medium
- 2022-12-01 ◦ Michael Plöd (@mploed) on Speaker Deck
- Hands-on Domain-driven Design - by Example (on leanpub)
- writes about DDD in general