# Aggregates: The Key Tactical Pattern
> [!Note]
> **Aggregates** serve as the central tactical pattern for grouping **Entities** and **Value Objects** that must maintain **transactional consistency**, establishing clear **cohesion boundaries** and encapsulating the related **business logic**.
An Aggregate defines a cluster of domain objects whose state changes must be treated as a single unit to preserve **model consistency** and protect critical **business invariants**. By enforcing that all updates flow through the **aggregate root**, the pattern simplifies **transaction management** and ensures that data access respects defined **boundaries**, preventing unintended side effects. Aggregates also organize the domain logic, making it easier to reason about how related [[Entities]] and [[Value Objects]] collaborate under a unified set of rules and constraints.
---
## 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.