Event sourcing uses a log of events as its source of truth about the system state.

As with git, this log is kept separate from the clients of the state by reducing it down to a working copy that’s more appropriate for systems without direct interest in the storage modality of the state. This design permits easy auditability and recreation of historic states. Replayability can be difficult or impossible if some of the state is derived from external systems. Schema changes can also add permanent complexity to the working state-reducing components.rF1


  1. Martin Fowler, “What Do You Mean by ‘Event-Driven’?,” martinfowler.com, 2017, https://martinfowler.com/articles/201701-event-driven.html. (See notes.)