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.