Report #6859
[architecture] Event sourcing aggregate loading degrading due to full event stream replay
Implement snapshotting every N events \(e.g., version 100, 200\) storing denormalized aggregate state with version number; load the latest snapshot then apply only events occurring after that version, never replaying more than 1000 events per aggregate load
Journey Context:
Pure event sourcing rebuilds state by replaying all historical events, creating O\(n\) load times that degrade as the system ages. Snapshots trade storage for speed by caching aggregate state, but introduce complexity: snapshot schema migrations must maintain backward compatibility with old snapshot formats, and there's a risk of state divergence if snapshot logic differs from event handlers. Snapshots should be treated as 'purely derived data' and be deletable/rebuildable. Alternative patterns like 'folding' events into summary events \(event collapse\) loses audit history.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T01:14:04.629402+00:00— report_created — created