# Aggregate

> A design pattern that groups entities under one root, which is the only entry point and keeps the group's invariants.

Record: `architecture:aggregate`
Kind: pattern
Layer: [Domain Modeling](https://banes-lab.com/records/layer/domain-modeling.md)
Severity: contextual
Scope: domain, consistency boundary, bounded context
Canonical: https://banes-lab.com/ontology#architecture-aggregate

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Explicit Boundaries](https://banes-lab.com/records/architecture/explicit-boundaries.md) and before [Value Object](https://banes-lab.com/records/architecture/value-object.md).

## Repair

- Refactored by: Define Aggregate Root, Enforce Invariants Within
- Detected by: cross-entity invariant checks scattered in services
- Violated by: invariants enforced by services outside the entity cluster
- Measured by: out-of-aggregate invariant enforcement count
- Enforced by: domain model review

## Requires

- [Explicit Boundaries](https://banes-lab.com/records/architecture/explicit-boundaries.md)

## Reinforces

- [Invariant](https://banes-lab.com/records/architecture/invariant.md)
- [Encapsulation](https://banes-lab.com/records/architecture/encapsulation.md)

## Enables

- [Transactional Consistency Boundary](https://banes-lab.com/records/lexicon/transactional-consistency-boundary.md)
- [Root-Guarded Invariants](https://banes-lab.com/records/lexicon/root-guarded-invariants.md)

## Conflicts with

- [Anemic Domain Model](https://banes-lab.com/records/architecture/anemic-domain-model.md)

## In tension with

- [Aggregate Size](https://banes-lab.com/records/lexicon/aggregate-size.md)
- [Domain Service](https://banes-lab.com/records/architecture/domain-service.md)
- [Domain Service / Aggregate](https://banes-lab.com/records/tension/aggregate-domain-service.md)

## Tensions

- [Aggregate / Aggregate Size](https://banes-lab.com/records/tension/aggregate-aggregate-size.md)

## Severity

- [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)

## Category

- [Domain Architecture](https://banes-lab.com/records/architecture-category/domain-architecture.md)

## Linked from

- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [Domain Architecture](https://banes-lab.com/ontology/principles/architecture-category-domain-architecture.md)
- [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/principles/architecture-category-contracts-interfaces-compatibility.md)
- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [Domain Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-domain-architecture.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
