How would you decide which aggregates in a system actually need snapshotting?
Snapshotting is worth configuring for aggregates that genuinely accumulate a large number of events over a long lifetime — a long-lived, actively used bank account is the canonical example — where replaying full history on every load has become, or is likely to become, a measurable performance cost. It's not worth configuring by default for every aggregate type, since aggregates that stay small over their lifetime, like a customer profile with a handful of events, gain nothing from snapshotting and just pay unnecessary storage and write overhead for every snapshot taken. A practical approach is to leave snapshotting off until profiling or production metrics show aggregate-loading time becoming a real bottleneck for a specific aggregate type, then configure a trigger threshold — typically an event count — sized to that aggregate's actual event volume, rather than guessing or applying one blanket setting everywhere.
Ready to master this question?
Generate a complete walkthrough — background, the full answer in plain language, a working code example explained line by line, a real-world scenario, common mistakes, and how this same question gets asked in different ways.
Sign in to generate a response