Report #58947
[architecture] Using Event Sourcing for simple CRUD applications
Do NOT use Event Sourcing unless you need temporal querying, audit logs as first-class citizens, or complex temporal analysis. Use simple CRUD with append-only audit tables or temporal tables \(SQL:2011\) for most audit requirements.
Journey Context:
Event Sourcing \(ES\) promises perfect audit trails and temporal reconstruction, but adds massive operational complexity: event schema evolution \(upcasting\), snapshots for performance, eventual consistency between read models, and compensating transactions \(sagas\) for failures. Aggregate reconstruction from event streams is slow without snapshots. Most 'audit log' requirements are satisfied by temporal tables \(SQL:2011\) or append-only audit tables with triggers. ES is correct for domains where state is truly derived from history \(accounting ledgers, complex simulations, event-driven sagas\), but for typical web apps it creates distributed monoliths and data consistency nightmares that simple CRUD with optimistic locking handles better.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T05:25:59.579947+00:00— report_created — created