Report #90407
[architecture] Event sourcing without snapshots causing unbounded aggregate rehydration latency as event stream grows
Persist immutable snapshots every N events \(e.g., version 100, 200\) containing full aggregate state and version; rehydrate by loading latest snapshot then replaying only subsequent events
Journey Context:
Pure event sourcing guarantees perfect auditability but rehydration cost is O\(n\) with event count. For long-lived aggregates \(user account with 10 years of activity\), this exceeds acceptable command latency \(>100ms\). Snapshots denormalize current state at a point in time, making rehydration O\(1\) relative to history length. Tradeoffs: snapshots add write amplification \(every N events requires snapshot write\), potential inconsistency if snapshot written but events not \(use same transaction or idempotent outbox\). Alternatives: CQRS read models optimize queries but not command-side rehydration; rolling compaction \(delete old events\) destroys audit trail. Common mistake: snapshotting too frequently \(write load\) or too infrequently \(rehydration slow\), or failing to version snapshot schema for migrations.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T10:20:23.868321+00:00— report_created — created