Event Sourcing is een alternatieve manier om je gegevens op te slaan. Met Event Sourcing wordt elke toestandsverandering opgeslagen als een afzonderlijk record (een event), in tegenstelling tot toestands-gebaseerde opslag die alleen de laatste versie van een toestand van een entiteit bijhoudt.
Bij de traditionele manier om de state van een applicatie op te slaan, capteren we de huidige state en slaan we deze op in een relationele/NoSQL database. Een nadeel hierbij is dat we geen mogelijkheid hebben om te kunnen afleiden hoe we tot de huidige state gekomen zijn. Het is mogelijk om de geschiedenis bij te houden in een apart auditing model, maar dit heeft een zekere complexiteit. In Event Sourcing daarentegen houden we alle "events" bij die betrekking hebben op de toestand van de applicatie. Elk event is een bedrijfsfeit en beschrijft een toestandsverandering die in het systeem heeft plaatsgevonden. De huidige state kan dan worden gereconstrueerd op basis van de volledige geschiedenis van events.