Event Sourcing foundations
Most systems store only the current state and overwrite it on every change. Event Sourcing stores each business change as an event and rebuilds the state from those events. You keep the full history of what happened, and your code follows the business process more closely. The idea is simple. The hard part is knowing where it pays off and how to start without getting burned.
The first articles show how it works, with exercises you can do on your own. The next ones help you decide: what you gain by not losing data, when Event Sourcing isn’t worth it, and how to pick a first feature that teaches you something without risking much. The last ones answer modelling questions you’ll hit early, such as moving existing relational data to events.
If you’re new, read them in order. How events are stored is covered in a separate guide.

Introduction to Event Sourcing - Self Paced Kit
2022-03-16For many developers, Event Sourcing is like a Nessie, most of them have heard of it, but not many have seen it. I was one of them. I started my journey with Event…
How to get the current entity state from events?
2021-06-30Today I’d like to go back a bit to the basics of Event Sourcing. I recently realised that I often cover more advanced topics. So sometimes, it’s handy to take a step back…
Should you throw an exception when rebuilding the state from events?
2022-06-08Event Sourcing is not a difficult pattern to understand. Event stores are not conceptually complicated databases (although implementation may be quite complex). We have…
Event Sourcing on PostgreSQL in Node.js just became possible with Emmett
2024-07-12Last week, I announced Pongo - Mongo, but it was on PostgreSQL. So, the Node.js library allows using PostgreSQL as a document database. Today, I have at least an equally…
Why a bank account is not the best example of Event Sourcing?
2020-12-09While explaining the Event Sourcing, bank account balance calculation is a common starting point. I claim that even though it sounds right, then it’s not the best example…
Never Lose Data Again - Event Sourcing to the Rescue!
2022-11-06Relational databases are not losing data. They’re robust, consistent and secure! Are they? Too often, we mix technical and logical concepts. Business transactions are not…
Start Small, Grow Big: how to pick the first feature for Event Sourcing
2026-08-31Let’s say we did the hard part. We read up on Event Sourcing, even here on my blog; we did a modelling workshop, we got the nods around the table, and someone finally…
When not to use Event Sourcing?
2021-06-23Event Sourcing is perceived as a complex pattern that’s challenging to learn. Typically it’s matched with the financial industry or big enterprise systems. If you’re…
Is the audit log a proper architecture driver for Event Sourcing?
2023-05-20Usually, one of the main drivers for Event Sourcing is the audit log capability. Indeed event stores are append-only logs, theoretically, we’re getting that for free. Yet…
Hitchhiker's Guide To Moving From Relational Data To Events
2023-12-15Knock knock? Who’s there? It’s me, Oskar, the end is near, did you know that? Ah, you know it but don’t know how to proceed? Let’s talk about the end of the CRUD world…
Should you record multiple events from business logic?
2024-01-14Asking people for feedback is an intriguing story. I like to get constructive criticism for my work, as that allows me to learn something new. When I prepare some new…
Stream ids, event types prefixes and other event data you might not want to slice off
2024-01-21You’re reading much more code than you’re writing. Readability is a highly subjective term. That’s probably why some call what we’re doing craft or even art. Last week…
What's the difference between a command and an event?
2021-02-17What’s the difference between a command and an event? The answer seems apparent, but let’s see if it’s straightforward. The command represents the intention. It targets a…