Event sourcing
Event sourcing is a software architecture pattern in which the state of a system is not stored directly but is instead derived from a sequence of immutable events. Rather than updating a database record, an event-sourced system appends an event to a log. The current state is computed by replaying events through a projection function. This makes the system's entire history a first-class citizen rather than an operational inconvenience.
The pattern is a direct application of local update architecture to software systems. Each event is a local update: it affects only the state derived from its causal lineage, not the global state of the system. Projections can be recomputed independently, allowing multiple read models to coexist without consistency conflicts.
Event sourcing is not free. Event logs grow without bound, requiring snapshotting strategies to bound replay time. Projections must be deterministic, or the system produces inconsistent state. And the pattern shifts complexity from write paths to read paths, a tradeoff that suits write-heavy domains poorly.
See also: Local update architecture, CQRS, Event-driven architecture, Command Query Responsibility Segregation, Event store