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 реакций.