View all services
Talk to QA Advisor
Browse the Knowledge Hub211 resources
/Books/Designing Data-Intensive Applications
Books · Honest notes

Designing Data-Intensive Applications: is it worth reading?

How distributed data systems actually behave, including all the ways they fail that tests rarely cover.

We earn nothing from any link on this page. No affiliate links anywhere in this library.

published
2017
key ideas
3
reading path
1

Reviewed by Viral Patel

Co-Founder, QAble

Cover of Designing Data-Intensive Applications
ArchitecturePerformance & reliability

Designing Data-Intensive Applications

by Martin Kleppmann

Publisher
O'Reilly
Year
2017
ISBN
9781449373320

Useful when you are: Senior / lead

Verdict

Should you read it?

Read it if

You test anything with a database under concurrency, or you have ever been unsure whether an isolation level would prevent a particular anomaly.

Skip it if

You want something quick. It is long, dense and genuinely demanding, though exceptionally clear for its difficulty.

The argument

What it argues

A rigorous treatment of the systems underneath most applications: storage engines, replication, partitioning, transactions, consistency models and consensus. It explains not just how they work but what guarantees they actually provide, which is usually weaker than people assume.

The chapters on transactions and consistency are the most valuable for a tester. They explain precisely what isolation levels do and do not prevent, which is the difference between a test suite that would catch a lost update and one that would not.

It is also the best explanation available of why eventual consistency makes testing hard, and what the honest options are.

Key ideas

Ideas worth taking from it

  1. 01

    Consistency models made precise

    Read committed, snapshot isolation, serialisable, linearisable. What each actually guarantees, rather than the loose way these terms are usually used.

  2. 02

    The reality of distributed systems

    Networks partition, clocks disagree, nodes fail silently. Every assumption a test makes about a distributed system should be checked against this chapter.

  3. 03

    Weak isolation anomalies

    Dirty reads, lost updates, write skew, phantoms. Named concurrency defects that serial testing cannot find by construction.

Criticism

What has dated, and what it gets wrong

The length and depth put off readers who would benefit from the first half. It is also from 2017, so some specific technology discussion has dated, though the fundamentals have not. A second edition has been in progress for some time.

Reading paths

On our reading paths

Performance and reliability

Book 2 of 4 · Performance testing

Explains replication, partitioning and consistency, so you can predict where a data-heavy system will break under load and design the test that proves it.

  1. Cover of Release It!1. Release It!
  2. Cover of Designing Data-Intensive Applications2. Designing Data-Intensive Applications (this book)
  3. Cover of Systems Performance3. Systems Performance
  4. Cover of Site Reliability Engineering4. Site Reliability Engineering

Keep reading

What to read next

Ready

Reading about quality is cheaper than learning it in production.

QAble runs QA for products in BFSI, gaming, healthcare and SaaS, with engineers who have read these and argued about them. Start with a free QA audit.

Talk to QA Advisor