Report #13794
[architecture] Unbounded aggregate reconstruction latency when replaying long event streams in event-sourced systems
Implement snapshotting at deterministic version intervals \(e.g., every 100 events\) and hydrate aggregates by loading the latest snapshot plus only events occurring after that version
Journey Context:
Pure event sourcing requires replaying the entire event stream to reconstruct an aggregate's current state. For long-lived aggregates \(e.g., a bank account with 10 years of transactions\), this becomes O\(n\) latency and memory usage, violating bounded context response time requirements. Snapshots are denormalized serializations of aggregate state at a specific version. By storing snapshots every N events, reconstruction becomes O\(N\) regardless of total event count. Tradeoff: Snapshots introduce a separate persistence concern, potential consistency lag between event log and snapshot store, and require a compaction/garbage collection strategy for old snapshots. Alternative approaches \(CQRS read models\) solve query-side latency but don't fix command-side aggregate hydration. Common error: implementing event sourcing without snapshotting for aggregates with >1000 events.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T19:47:11.856226+00:00— report_created — created