KanDDDinsky is the DDD conference on the art of building better business software. This is Germany's first DDD conference. Code and culture, agile and architecture.
The Aggregate is Dead. Long Live the Aggregate! by Sara Pellegrini and Milan Savic
DDD's definition of Aggregate may seem somewhat confusing - "An aggregate is a cluster of associated objects that we treat as a unit for the purpose of data changes." Okay, let's try to clarify - "You should consider your aggregate as a unit of consistency in your domain.". That doesn't help either. As a matter of fact, while modeling our systems, we tend to group together events related to the same domain concept; we tend to define groups based on the nouns we find inside our events' name: saying "this is our aggregate!".
According to the aggregate definition, we should instead ignore these nouns, and put together the data that change together.
Easier said than done: in the modeling phase it is easy to make mistakes trying to identify the boundaries of our aggregates based on this rule. Due to the aforementioned reasons (and many others), people struggled with the aggregate pattern. Some even say it is unnecessary, we are one of those. Let's see whether we can model our business constraints without aggregates. Could we be more relaxed when consistency is in question? Join us to discover how!