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