Пример
Вместо хранения balance = 1500 — храним события: AccountCreated(0), MoneyDeposited(2000), MoneyWithdrawn(500). Баланс = 0 + 2000 − 500 = 1500.
Преимущества
- Полный audit trail: всегда знаем почему состояние такое, а не только какое оно
- Можно восстановить состояние на любой момент времени
- Новые read-модели строятся replay-ем существующих событий
Сложности
- Eventstore растёт бесконечно — нужны snapshots
- Сложная эволюция схемы событий (versioning)
- Высокая сложность реализации