Every change in state is captured as an event object
A system of record : the event store as the source of truth
Pub / Sub : Events are published by the store and consumed / processed by subscribers
Time travelling : the history of events can be played at anytime
Application state can be stored using snapshots
Eventual consistency of data
Events must be reversible through compensating events
Make sure the event is only played once
Replay mode: Wrapping external system interactions with a gateway to avoid sending out messages multiple times