~/bookshelf/designing-data-intensive-applications
book notes · finished
Designing Data-Intensive Applications
The book I reread before every schema or messaging decision. My notes map its chapters to systems I've actually run.

- author
- Martin Kleppmann
- published
- 2017
- pages
- 616
- my rating
- read
- 2025-03-14
- views
On this page
key takeaways
- 01Every storage engine is a trade-off between write amplification, read amplification and space; pick the one whose failure mode you can live with.
- 02Replication lag is a product decision. Read-your-writes and monotonic reads are features you promise, not defaults you get.
- 03Exactly-once is idempotence plus deduplication plus retries; there is no magic in the transport.
- 04Most 'we need microservices' problems are 'we need clear data ownership' problems.
Why it stuck
I came to this book after my first monolith-to-services refactor and realised I'd been making replication and consistency decisions by accident. Kleppmann gives you the vocabulary to make them on purpose.
Where it shows up in my work
- Chapter 5 (Replication) is the reason the quote service in the A sub-100ms personalised surge-pricing engine for a US food marketplace reads from a pre-aggregated profile instead of the primary: the staleness is bounded and named.
- Chapter 7 (Transactions) is behind the
FOR UPDATElocking on anomaly rows in Vedico: realtime fleet tracking for telecom field operations; two pings must not open two incidents. - Chapter 11 (Stream processing) shaped the event-driven split in Prompt-to-app BaaS: generating full-stack stores on AWS, then cutting the bill by 76%: consumers are idempotent, so replays are boring.
- The multi-tenant trade-offs in Designing Multi-Tenant Database Architectures are essentially the book's partitioning chapter applied to SaaS.
Quotes I keep
"The limits of my language mean the limits of my world." Kleppmann quoting Wittgenstein, on why naming consistency guarantees matters.
What I disagree with
Very little, but the book predates the vector-database wave. The retrieval layer in Advanced RAG Architecture: Graph, Vector, Redis, and PostgreSQL needed the same thinking about indexes and consistency that the book applies to search; it just isn't in there yet.
Linked from
Related notes
Discussion (0)
name + comment · no login