The Aggregate is dead. Long live the Aggregate!
summary
Argues that traditional DDD aggregates cause needless contention and refactoring pain and proposes a behavior-first alternative called Dynamic Consistency Boundary that uses event sourcing, stream queries, tags and a conditional append API. Uses an educational example (course/student) and shows splitting a monolithic aggregate into courseInfo and courseSubscriptions, then using conditional append (query + consistency marker — e.g. last seen event 592 causes acceptance, event 593 causes rejection) and pure events with domain identifiers to remove duplicates, reduce contention and make refactors feasible.
AI-written summary · about
chapters (16)
- 0:00Introduction
- 2:33Aggregate pitfalls overview
- 7:35Aggregate breaks storytelling
- 8:40Aggregate mixes technical and business
- 13:20Larger aggregates cause contention
- 16:37Splitting aggregates trade-offs
- 19:05Refactoring aggregates is hard
- 21:54Multi-aggregate transactions add complexity
- 27:18Rethinking the command model
- 29:06Focus on behavior over structure
- 31:38Query-based event streaming
- 35:38Conditional append for consistency
- 40:56Removing duplicate events
- 42:02Pure events and domain identifiers
- 47:17Dynamic consistency boundaries
- 49:01Conclusion and feedback
related talks
48mThe Aggregate is dead. Long live the Aggregate!
48mThe Aggregate is dead. Long live the Aggregate!
47mThe Aggregate is dead. Long live the Aggregate!
50mDeveloping Microservices with Aggregates
50mEntities and Aggregates: The Moment We 'Clicked' and Understood...
47mPHP: From Model to Commit - the Short History of an Aggregate
01mŁukasz Reszke speaking at DDD Europe 2025
58mAll our aggregates are wrong
