advanced

Domain events

Фиксируйте meaningful business facts после state changes, чтобы side effects, integration и audit behavior координировались explicit.

Domain events фиксируют значимые бизнес-факты, которые уже произошли — OrderPlaced, PaymentCaptured — внутри доменной модели. Координируют side effects, интеграцию и audit без спутывания aggregates. Поднимайте events с aggregate roots и dispatch после успешной персистентности.

На интервью: domain events vs integration events и technical logs. Outbox и идемпотентные handlers.

Типовые ошибки: events как commands; publish до commit; бизнес-логика в handlers вместо domain.

Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.

Чеклист:

  • Имена в прошедшем времени о бизнес-фактах.
  • Сбор на aggregate, dispatch при commit.
  • Идемпотентные handlers с учётом side effects.
  • Versioning схем для downstream consumers.