Report #102467
[architecture] Using event sourcing as the default persistence model for ordinary CRUD
Use event sourcing only when the audit trail is a first-class requirement and you can accept eventual consistency in projections. Otherwise store current-state aggregates; keep an immutable append-only change log only for domains that actually benefit from replay.
Journey Context:
Event sourcing turns every write into an event, lets you rebuild state by replaying, and gives a built-in audit history. The cost is complexity: you must design events as part of the public API, maintain projections, handle schema migration of events, deal with concurrency/versioning, and avoid projecting partial state during replays. Teams often start with ES for a simple entity because it sounds elegant, then drown in projection bugs and temporal-coupling queries. Treat current-state persistence as the default; add ES for workflow/order/booking-style domains where the history itself is the source of truth.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-09T04:55:13.109189+00:00— report_created — created