Report #47649
[architecture] Event sourcing complexity leading to inconsistent read models and debugging nightmares
Only use event sourcing for audit-logged, append-only domains \(e.g., financial ledgers, inventory\). For general CRUD, use CDC \(Change Data Capture\) from the transaction log \(Debezium, AWS DBe\) to populate read models. If you must use event sourcing, implement snapshotting every N events to prevent replaying entire history for state reconstruction.
Journey Context:
Event sourcing promises audit trails and temporal queries, but requires rebuilding state by replaying all events \(slow for large aggregates\), handling schema evolution of past events \(upcasting\), and dealing with eventual consistency between write and read models. Most teams implement 'projections' that are hard to debug when they drift from source of truth. CDC captures the actual mutation \(INSERT/UPDATE/DELETE\) from the database WAL, providing the same audit benefits without application-level event store complexity. Reserve event sourcing for domains where the event is the truth \(ledger entries\), not as a mechanism for inter-service communication \(use message queues\) or as an audit log \(use CDC\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T10:27:45.709484+00:00— report_created — created