advanced
Aggregates
Группируйте entities и value objects за consistency boundary, который controls invariant updates и transaction scope.
Aggregates группируют entities и value objects за одной consistency boundary; единственная точка внешней мутации — aggregate root. Задают scope транзакции — инварианты, которые должны держаться атомарно — и не дают запутанных ссылок через границы. Между aggregates — ID и eventual coordination.
На интервью: aggregate roots для cart или invoice. Маленькие vs большие aggregates и enforcement инвариантов.
Типовые ошибки: roots на весь object graph; прямая мутация child entities снаружи; distributed transactions на несколько aggregates.
Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.
Чеклист:
- Один root контролирует внутреннюю согласованность.
- Внешние ссылки только по identifiers.
- Размер aggregates под реальные transaction needs.
- Domain events для cross-aggregate реакций.