We’ve been using axon (2.4 in production, 3.x to be pushed into production shortly) along with event sourcing with events being persisted in a relational database. Some of our aggregates seem to be accumulating a large number of events. We are aware that snapshotting is one way to make sure that aggregate load times remain predictable and performant.
However, we also make enhancements to these aggregates (new events, enhancements to existing ones, enhanced aggregate state, changes to state restoring logic in the event sourcing handlers - the last one is rare), requiring us to invalidate snapshots.
This means that there are quite a few occasions where we will need to load aggregates from event zero. At some point, we’d also like to think about archiving some of our old data.
Curious to understand how others are dealing with situations similar to the above?
Insights highly appreciated!