Domain-Driven Design

Domain-Driven Design: Aggregates & Invariants

What aggregates are, how to draw their boundaries, and why external code should only talk to the root.

January 17, 2026
#ddd#aggregates

An Aggregate is a cluster of domain objects treated as a single unit for data changes. Every aggregate has a root entity — the only object external code may hold a reference to. All modifications go through the root, which enforces invariants across the cluster. This is the primary mechanism for maintaining consistency without distributed transactions.

Continue reading