Snapshots are a classic tradeoff: write amplification now versus replay pain later.
Simple Cost Frame
Let replay time be $R(n)$ for $n$ events since snapshot, and snapshot overhead per write be $S$. Pick cadence minimizing expected recovery + steady-state costs.
Practical Heuristic
- Snapshot on both count threshold and wall-clock threshold.
- Snapshot sooner for aggregates with high recovery criticality.
if events_since_snapshot > 10_000 or age > 30m => snapshotTune cadence using incident replay data, not gut feel.