Что такое Event Sourcing?
Уровень: Senior
Ответ
Event Sourcing — это паттерн хранения состояния системы через последовательность событий. В традиционном подходе мы храним текущее состояние (например, в базе таблица с полями, которые обновляются при изменении). При Event Sourcing не сохраняется непосредственно последняя версия данных, вместо этого каждая изменение записывается как отдельное событие (например: "На счёт X зачислено 100", "Со счёта X списано 50"). Текущее состояние вычисляется как результат применения всех событий к начальному состоянию. Таким образом, "история" изменений хранится полностью. Плюсы: полная трассируемость действий (можно понять, как система пришла к текущему состоянию, можно откатиться или пересчитать), возможность "проиграть" события в другой контекст (например, построить проекции). Минусы: сложнее запросы текущего состояния (нужно суммировать/агрегировать события), требуется механизмы миграции событий при изменении логики. Часто Event Sourcing используется вместе с CQRS: события пишутся в лог (Event Store), а для чтения формируются проекции (например, материализованное состояние) для быстрых запросов. Пример: банковский счёт — вместо хранения баланса, храним все транзакции; баланс вычисляется суммированием транзакций. Это Event Sourcing.