# Rule 2: Design Small Aggregates > [!Note] > Keep [[Aggregates]] minimal by including only the [[Entities]] necessary to uphold **invariants**, thereby avoiding **oversized clusters**, promoting **coherence separation**, and **optimizing performance**. The second rule emphasizes **minimizing components** within an [[Aggregate]]: group only those [[Entities]] and [[Value Objects]] strictly required to enforce business invariants. Avoid creating **oversized clusters**, which inflate transaction costs, strain memory, and complicate maintenance. When distinct sets of objects don’t need immediate consistency with one another, they likely deserve their own [[Aggregate]], ensuring clear **coherence boundaries**. Smaller [[Aggregate]] also **optimize performance**, enabling faster operations and reducing contention in concurrent environments. --- ## References - Vernon, V. (2016). _Domain-driven design distilled_. Addison-Wesley Professional. - Vernon, V. (2013). _Implementing domain-driven design_. Addison-Wesley Professional. - Khononov, V. (2021). _Learning domain-driven design: Aligning software architecture and business strategy_. O’Reilly Media. - Alammar, J., & Grootendorst, M. (2024). _Hands-on large language models: Language understanding and generation_. O’Reilly Media. - Evans, E. (2003). _Domain-driven design: Tackling complexity in the heart of software_. Addison-Wesley Professional. - Millett, S., & Tune, N. (2015). _Patterns, principles, and practices of domain-driven design._ Wrox.