Report #97222
[architecture] Event sourcing chosen as the default persistence model and now reads, migrations, and debugging are painful
Use event sourcing only when the audit log or temporal rebuild is a core requirement. Pair it with CQRS projections for reads, version events with upcasters, and snapshot aggregate state so you do not replay the entire stream on every load.
Journey Context:
Event sourcing makes the event stream the source of truth, which is powerful for audit, regulatory replay, and temporal queries, but it is not a replacement for ordinary CRUD. Every read becomes a projection, schema changes become event-version migrations, and a long-lived aggregate can take seconds to hydrate if you replay thousands of events. Teams that skip projections end up querying the event store directly and building ad-hoc read models anyway. Start with a normal relational model; add event sourcing only for bounded contexts that genuinely need it. When you do, snapshot at intervals, store causation and correlation IDs, and treat event schema changes as a first-class migration problem.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-25T04:45:35.046704+00:00— report_created — created