It's only easy if the system is built once and never changes.
For example, does an "item sold" event from 8 years ago has the same data fields and fundamentally mean the same thing with the same outcomes, compared to the ones recorded today?
If not, you've got to start talking about stuff like writing multiple versions of code to play-back multiple versions of events slightly differently. Or at least have two versions in place, while some background process "upgrades" the old events.
And that's assuming you can even imagine a good way to re-express old obsolete behavior into a direct modern equivalent.
In contrast, I'm suggesting a mutable model which emits events. The events are used for triggering current logic, and are kept primarily for auditing/data-mining proposes.
For example, does an "item sold" event from 8 years ago has the same data fields and fundamentally mean the same thing with the same outcomes, compared to the ones recorded today?
If not, you've got to start talking about stuff like writing multiple versions of code to play-back multiple versions of events slightly differently. Or at least have two versions in place, while some background process "upgrades" the old events.
And that's assuming you can even imagine a good way to re-express old obsolete behavior into a direct modern equivalent.
In contrast, I'm suggesting a mutable model which emits events. The events are used for triggering current logic, and are kept primarily for auditing/data-mining proposes.