Event Sourcing & CQRS
Today, Tomer Gabel gave a talk to BigPanda’s RnD with the title: “An Abridged Guide to Event Sourcing”. This eye-opening presentation definitely deserves a more in-depth blog post, but I figured it might be useful to summarize my takeaways from it.
Disclaimer: the ideas and takeaways mentioned reflect my understandings of the lecture, and not necessarily the speaker’s original intents.
Terminology
- Event Sourcing - each entity in our DB is a stream of immutable events
- CQRS - separation of writes (append events) and reads (adjustable projections)
Who told you you’re allowed to destroy data? – Greg Young
Lessons Learned
- CRUD shouldn’t be a premise. Strong consistency isn’t always required
- Storage costs is an operational concern that’s worth discussion
- Event Streams + CQRS (done right) has several pros like decoupled reads/writes and built-in auditing which helps with debugging
- Using Snapshots is a great way to improve performance
Resources
Further reading, if I somehow managed to intrigue you
- Talk slides
- Recording from Reversim conference