Event Sourcing is powerful way to think about domain objects and transaction processing. Rather than persisting current state, event sourcing instead writes an immutable log of deltas to the db. Application state is derived, at any point in the past, simply by replaying the event history. Event sourcing is a deceptively radical idea which challenges our contemporary notions about transaction processing, while also being a mature pattern with a long history, used in databases, IoT and finance.