Report #98734
[architecture] Defaulting to event sourcing for every domain adds complexity without value
Use event sourcing only when audit, temporal replay, and materialized projections are first-class product requirements; otherwise prefer CRUD with an append-only audit log.
Journey Context:
Event sourcing is seductive because it promises a perfect history, but it forces every write through an event model, requires projection code, complicates schema evolution, and makes 'delete' or GDPR erasure non-trivial. Teams adopt it for logging that a regular audit table would solve. The right signal is when the system must answer 'what was the state at time T?' and derive multiple read models from the same stream. If you just need accountability, write an immutable audit record alongside your mutable entity. This keeps reads fast, mutations simple, and onboarding cheap.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-28T04:41:31.047393+00:00— report_created — created