Posts
All the articles I've posted.
-
[DDD Intro #6] Domain Event: Expressing what happened in the domain
A domain model is not made only of state. Things keep happening in the domain. Orders are placed, payments are completed, shipments are requested, subscriptions are renewed, refunds are approved, and entitlements expire.
-
[DDD Intro #5] Aggregate: The boundary of consistency
Among DDD's tactical patterns, Aggregate is one of the most important and most misunderstood concepts. Entity and Value Object are relatively intuitive. Aggregate feels vague when we first encounter it.
-
[DDD Intro #4] Bounded Context: A model is consistent only within a boundary
If asked to choose just one of the most important concepts in DDD, many people would say Bounded Context. At the same time, it is also one of the most misunderstood concepts.
-
[DDD Intro #3] Ubiquitous Language: Good design starts with good language
Ubiquitous Language is one of the most important concepts in DDD, and also one of the easiest to treat lightly. Many teams understand Ubiquitous Language as little more than "creating a glossary." Of course, organizing terms is a good start. But Ubiquitous Language is much deeper than a glossary.
-
[DDD Intro #2] A model is not a copy of reality
To understand DDD, we first need to rethink the word "model." Many people think of a model as something that copies reality as accurately as possible. There is a member in reality, so we create Member. There is an order, so we create Order. There is a payment, so we create Payment. We try to include every attribute that exists in reality.
-
[DDD Intro #1] DDD is not a technology, but a perspective
When you first study DDD, technical terms naturally stand out first. Entity, Value Object, Aggregate, Repository, Domain Service, Domain Event. Go a little further and terms like Layered Architecture, Hexagonal Architecture, CQRS, and Event Sourcing follow.