Report #24731
[architecture] Event-sourced aggregates becoming unacceptably slow to load as event count grows into the thousands
Implement a snapshot strategy that serializes aggregate state periodically, loading only events after the snapshot version during reconstruction
Journey Context:
Pure event sourcing requires replaying all events \(O\(n\)\) to reconstruct aggregate state. For long-lived aggregates \(user accounts with decade-long history\), this becomes memory-intensive and slow. The snapshot pattern periodically persists the aggregate's state to a separate table/stream \(e.g., every 100 events or 24 hours\). Loading becomes: fetch latest snapshot \+ replay events since that version. Tradeoffs: Snapshots are denormalized and must be invalidated if event schemas change \(requiring snapshot regeneration\). Creates a dual-write coordination problem between event store and snapshot store. Alternative 'folded' event streams lose audit history.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T19:55:29.460858+00:00— report_created — created