
Designing Data-Intensive Applications
Martin Kleppmann
Synopsis
Designing Data-Intensive Applications is a comprehensive guide to the principles behind databases, distributed systems, and data flow. Martin Kleppmann covers storage engines, replication, partitioning, transactions, consistency models, batch and stream processing, and the trade-offs that shape real systems.
The book is technology-aware but principle-first: you learn why systems are built the way they are, not just how to use a particular tool. It connects theory (CAP, consensus, serialisation) to practice (when to choose a relational DB, when to add a cache, when to use event sourcing) in a way that stays relevant as tools evolve.
Why I Recommend It
This is one of the best single books for understanding data systems. Whether you're choosing a database, designing an API, or debugging a distributed failure, the concepts here—replication lag, consistency guarantees, ordering—give you a mental model that cuts through marketing and hype.
Key takeaways:
- There are no silver bullets: Every data system makes trade-offs; understand them before choosing
- Consistency is a spectrum: From strong consistency to eventual consistency, each level has costs and benefits
- Faults are the norm: Design for partial failure, replication lag, and network partitions
Practical application: I refer to it when making data architecture decisions, when explaining incidents (e.g. "this is a consistency boundary issue"), and when mentoring engineers on distributed systems. The chapters on transactions and consensus are especially useful for anyone working with microservices or multi-datacenter systems.
For backend and platform engineers, it's indispensable.
Favourite Quote
"The boundaries between different types of systems are blurring. The best way to make good decisions is to understand the fundamental trade-offs."
Kleppmann avoids tribal arguments about SQL vs NoSQL or batch vs stream. The book gives you the concepts to evaluate any system and to understand why the landscape looks the way it does.