How to Prepare for Software Engineer System Design Interviews: The Resources
A list of classic textbooks for system design interviews: DDIA for the foundations, then architecture trade-offs, domain modeling, reliability, classic patterns, and the original papers from MIT's distributed systems course. Each book is checked against its publisher's page.
On this page
A system design interview tests how you design a large software system: how you store data, how you route requests, what happens when a machine fails, and what each choice costs. That knowledge comes from the classic textbooks of the field. This article lists only textbooks and classic works. It does not include books that teach interview questions. The list has six groups and ends with the reading order that I recommend.
On 30 October 2026, I checked the author, edition, and publication date of each book against the publisher’s page or the author’s own page. Several books on the list now have a new edition, so check the edition before you buy.
The first group explains data systems and distributed systems

Designing Data-Intensive Applications is the foundation of the list
Martin Kleppmann’s Designing Data-Intensive Applications is usually called DDIA. The table of contents of the second edition starts with data models, storage, and encoding. Then it moves to replication, sharding, transactions, and the trouble with distributed systems. Most of the trade-offs that interviewers ask about have their background in those chapters.
Two editions of DDIA exist. Kleppmann wrote the second edition with Chris Riccomini. The O’Reilly page gives the publication date as February 2026, and the book list on Kleppmann’s homepage says March 2026. Kleppmann wrote the first edition alone, and O’Reilly published it in March 2017. If you have a choice, read the second edition.
Understanding Distributed Systems gives a fast overview
Roberto Vitillo’s Understanding Distributed Systems is shorter than DDIA. The book’s website says that the current version is the 2nd edition, with 33 chapters and 328 pages. The book has five parts: communication, coordination, scalability, resiliency, and maintainability. You can read the first two chapters for free on the website.
The author says that the book focuses on breadth more than depth. It covers the network stack, data consistency models, scalability and reliability patterns, and observability. If you have little backend experience at scale, read this book first and DDIA second.
Database Internals goes deeper into storage engines
Alex Petrov’s Database Internals was published by O’Reilly in October 2019. The book’s website says that the book has two parts, Storage Engines and Distributed Systems. The first part covers B-trees, LSM trees, and the write-ahead log. The second part covers failure detection, leader election, consistency models, and consensus.
Interviews seldom go this deep. But an interviewer can ask why a database writes fast, or why your storage choice fits the read/write ratio. A reader of this book can answer at the level of the data structures.
The second group gives a framework for architecture trade-offs

Fundamentals of Software Architecture compares architecture styles
Mark Richards and Neal Ford published the second edition of Fundamentals of Software Architecture with O’Reilly in March 2025. This edition has five new chapters. The first chapters define architecture characteristics, which are requirements such as scalability and availability that are not features. Then the book discusses microservices, modular monoliths, microkernels, layered architectures, and other styles one by one. A frequent follow-up question in an interview is “why this design and not that one?” This book gives you the words and the steps to compare designs.
Software Architecture: The Hard Parts is about problems with no best practice
Software Architecture: The Hard Parts has four authors: Neal Ford, Mark Richards, Pramod Sadalage, and Zhamak Dehghani. O’Reilly published it in October 2021. The title of chapter 1 is “What Happens When There Are No ‘Best Practices’?”. The book discusses service granularity, contracts between services, and distributed transactions. Interviewers often ask about these topics too.
Two books about code-level design are optional
The next two books are about design at the level of modules and code. They have little to do with distributed systems, so they are optional for interview preparation.
Robert C. Martin’s Clean Architecture was published by Pearson in September 2017. Its table of contents has three main parts: design principles, component principles, and architecture. One chapter is about how to draw boundaries.
John Ousterhout is a professor of computer science at Stanford. He released the second edition of A Philosophy of Software Design in July 2021. The second edition adds sections to two chapters that compare the book with Robert Martin’s Clean Code. Ousterhout writes that the two authors have significant differences of opinion about the length of methods and the role of comments. If you read both books side by side, you see the design trade-offs more clearly than if you read only one.
The third group covers domain modeling and service boundaries

When an interview question asks how to split a system into services, you need the concepts of domain modeling.
Eric Evans’s Domain-Driven Design was published by Addison-Wesley in August 2003. Domain Language, the training company where Evans teaches, calls it “The Big Blue Book”. Ubiquitous Language, Aggregates, and Bounded Context are concepts that you hear often in interviews, and each one has its own section in the book.
Vaughn Vernon’s Implementing Domain-Driven Design was published by Addison-Wesley in February 2013. It shows how to apply Evans’s concepts in a real project.
Sam Newman’s Building Microservices, second edition, was published by O’Reilly in August 2021. Newman says that the second edition is a complete rewrite of the first. The first chapter is free on his website.
The fourth group covers reliability and operations

Google gives away three SRE books
O’Reilly published the first edition of Google’s Site Reliability Engineering in April 2016. Google puts the full text online for free at sre.google. The companion book The Site Reliability Workbook and Building Secure & Reliable Systems are also free to read online. Service level objectives (SLOs), load balancing at the frontend and in the datacenter, and handling overload all have their own chapters.
Google has also released a completely rewritten second edition. On the sre.google books page, the second edition has only a link to buy it from Google Books, with no link to read online. The free book is still the first edition.
Release It! explains how systems fail in production
Michael Nygard’s Release It!, second edition, was published by the Pragmatic Bookshelf in January 2018. The book has a chapter on stability patterns, which include timeouts, circuit breakers, and bulkheads. When an interviewer asks what happens if a downstream service fails, you can answer with these patterns.
The fifth group is classic pattern catalogs for reference

These three books are more than twenty years old, and their technology examples are dated. I use them as reference books: when I see a pattern name that I do not know, I look up that one chapter.
Martin Fowler’s Patterns of Enterprise Application Architecture came out in 2002. Fowler says that the first part is a tutorial of about 100 pages, and the rest is a reference to forty or so patterns. The topics include how to layer an enterprise application, how to organize domain logic, and how to connect that logic to a relational database.
Gregor Hohpe and Bobby Woolf’s Enterprise Integration Patterns was published by Addison-Wesley in October 2003. It contains 65 integration patterns for systems that communicate with messages. The pattern list on the website includes the Publish-Subscribe Channel, the Dead Letter Channel, and the Idempotent Receiver. You use these concepts when you design a message queue in an interview.
Design Patterns, by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, was published by Addison-Wesley in October 1994. It is about patterns in object-oriented code, so it helps less with system design interviews.
The sixth group is an open course and its original papers

MIT’s distributed systems course 6.5840 (formerly 6.824) puts its schedule, readings, and labs online. The Spring 2026 schedule asks students to read papers before class, for example GFS (2003), Raft (2014), and Spanner (2012). The labs ask students to build MapReduce and Raft. If you want to find the original paper behind an idea in DDIA, use this schedule as a reading list.
I recommend this reading order
- Read DDIA first for the foundations. If you have little experience, read Understanding Distributed Systems before DDIA.
- Read Fundamentals of Software Architecture next. It gives you a method to compare designs, so you can explain why you chose one.
- Choose the books on domain-driven design, microservices, and SRE that fit your target role. For product systems, read more of Evans, Vernon, and Newman. For infrastructure, read more of the SRE books, Release It!, and Database Internals.
- Read the original papers on the MIT 6.5840 schedule last. When you read GFS, Raft, or Spanner, compare the paper with the related chapter of DDIA. Find out where the conclusions of the book come from.
You do not need to read the pattern books in the fifth group from start to finish. Look up a pattern when you need it. If you have little time, read at least DDIA and Fundamentals of Software Architecture. If you have more time, do some of the MIT labs. Then you can talk about replication and consensus with more confidence.
References
Publisher pages, authors’ own pages, and course home pages are primary sources.
Data systems and distributed systems
- O’Reilly — Designing Data-Intensive Applications, 2nd Edition. Listing: “by Martin Kleppmann, Chris Riccomini”, “February 2026”, 672 pages — fetched 2026-10-30
- O’Reilly — Designing Data-Intensive Applications, 2nd Edition, table of contents. Chapters 3 to 9: “Data Models and Query Languages”, “Storage and Retrieval”, “Encoding and Evolution”, “Replication”, “Sharding”, “Transactions”, “The Trouble with Distributed Systems” — fetched 2026-10-30
- O’Reilly — Designing Data-Intensive Applications (first edition). Listing: “by Martin Kleppmann”, “March 2017”, 616 pages — fetched 2026-10-30 (no archive found)
- Martin Kleppmann — homepage, list of books. Quote: “Designing Data-Intensive Applications, 2nd Edition. O’Reilly Media, March 2026.” — fetched 2026-10-30
- Roberto Vitillo — Understanding Distributed Systems website, edition. Quote: “2nd edition with 33 packed chapters and 328 pages in PDF and EPUB format” — fetched 2026-10-30
- Roberto Vitillo — Understanding Distributed Systems website, structure of the book. Quote: “The book is divided into 5 parts: communication, coordination, scalability, resiliency, and maintainability.” — fetched 2026-10-30
- Roberto Vitillo — Understanding Distributed Systems website, free chapters. Quote: “Read the first two chapters for free” — fetched 2026-10-30
- Roberto Vitillo — Understanding Distributed Systems website, audience. Quote: “As an expert, you are likely looking for depth rather than breadth, and this book focuses more on the latter”. Same page: “you need to be familiar with the network stack, data consistency models, scalability and reliability patterns, observability best practices, and much more” — fetched 2026-10-30
- O’Reilly — Database Internals. Listing: “by Alex Petrov”, “October 2019”, 370 pages — fetched 2026-10-30
- Alex Petrov — Database Internals website, structure of the book. Quote: “The book consists of two parts: Storage Engines and Distributed Systems” — fetched 2026-10-30
Software architecture
- O’Reilly — Fundamentals of Software Architecture, 2nd Edition. Listing: “by Mark Richards, Neal Ford”, “March 2025”, 546 pages — fetched 2026-10-30
- O’Reilly — Fundamentals of Software Architecture, 2nd Edition, overview. Quote: “This updated edition provides a comprehensive overview of software architecture’s many aspects, with five new chapters covering the latest insights from the field.” — fetched 2026-10-30
- O’Reilly — Fundamentals of Software Architecture, 2nd Edition, overview. Quote: “Architecture styles and patterns: Microservices, modular monoliths, microkernels, layered architectures, and many more”. Table of contents, chapter 4: “Architectural Characteristics Defined” — fetched 2026-10-30
- O’Reilly — Software Architecture: The Hard Parts. Listing: “by Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani”, “October 2021”, 462 pages — fetched 2026-10-30
- O’Reilly — Software Architecture: The Hard Parts, table of contents, chapter 1. Quote: “1. What Happens When There Are No ‘Best Practices’?” — fetched 2026-10-30
- O’Reilly — Software Architecture: The Hard Parts, overview. Quote: “they examine everything from how to determine service granularity, manage workflows and orchestration, manage and decouple contracts, and manage distributed transactions” — fetched 2026-10-30
- InformIT (Pearson) — Clean Architecture: A Craftsman’s Guide to Software Structure and Design. Listing: “By Robert C. Martin”, “Published Sep 10, 2017 by Pearson” — fetched 2026-10-30
- InformIT (Pearson) — Clean Architecture, table of contents. Parts: “Part III: Design Principles”, “Part IV: Component Principles”, “Part V: Architecture”, and the chapter “Boundaries: Drawing Lines” — fetched 2026-10-30
- John Ousterhout — Software Design Book page. Quote: “In July of 2021 I released the Second Edition of A Philosophy of Software Design.” Page header: “John Ousterhout, Professor, Department of Computer Science” — fetched 2026-10-30
- John Ousterhout — Software Design Book page, comparison with Clean Code. Quote: “we have significant differences of opinion on topics such as the length of methods and the role of comments” — fetched 2026-10-30
Domain modeling and service boundaries
- InformIT (Addison-Wesley) — Domain-Driven Design: Tackling Complexity in the Heart of Software. Listing: “By Eric Evans”, “Published Aug 20, 2003 by Addison-Wesley Professional” — fetched 2026-10-30
- InformIT (Addison-Wesley) — Domain-Driven Design, table of contents. Sections: “UBIQUITOUS LANGUAGE”, “AGGREGATES”, “BOUNDED CONTEXT” — fetched 2026-10-30
- Domain Language — DDD Resources. Quote: “The Big Blue Book. Domain-Driven Design, by Eric Evans, provides a broad framework for making design decisions”. Same page: “In addition to offering training, Eric Evans and the other instructors are active speakers and writers” — fetched 2026-10-30
- InformIT (Addison-Wesley) — Implementing Domain-Driven Design. Listing: “By Vaughn Vernon”, “Published Feb 6, 2013 by Addison-Wesley Professional” — fetched 2026-10-30
- O’Reilly — Building Microservices, 2nd Edition. Listing: “by Sam Newman”, “August 2021”, 612 pages — fetched 2026-10-30
- Sam Newman — Building Microservices, 2nd Edition page. Quote: “The 2nd edition is a complete rewrite of the previous best selling edition” — fetched 2026-10-30
- Sam Newman — Building Microservices, 2nd Edition page, free chapter. Quote: “The first chapter of the book is available for free.” — fetched 2026-10-30
Reliability and operations
- O’Reilly — Site Reliability Engineering (first edition). Listing: “by Niall Richard Murphy, Betsy Beyer, Chris Jones, Jennifer Petoff”, “April 2016” — fetched 2026-10-30
- Google — Site Reliability Engineering, online table of contents. Chapters include 4 “Service Level Objectives”, 19 “Load Balancing at the Frontend”, 20 “Load Balancing in the Datacenter”, and 21 “Handling Overload” — fetched 2026-10-30
- Google — The Site Reliability Workbook, online table of contents. Chapter 2: “Implementing SLOs” — fetched 2026-10-30
- Google — sre.google books page, Building Secure & Reliable Systems. The entry has a “Read online” link — fetched 2026-10-30
- Google — sre.google books page, second edition. Quote: “In this completely rewritten edition, we explore current SRE practices and how they’ve evolved in the decade since the book’s initial publication”. The entry has only a “Buy from Google Books” link — fetched 2026-10-30
- The Pragmatic Bookshelf — Release It! Second Edition. Listing: “by Michael Nygard”, Pages: 376, Published: January 2018 — fetched 2026-10-30
- The Pragmatic Bookshelf — Release It! Second Edition, table of contents. The chapter “Stability Patterns” lists “Timeouts”, “Circuit Breaker”, and “Bulkheads” — fetched 2026-10-30
Classic patterns
- Martin Fowler — Patterns of Enterprise Application Architecture book page. Listing: “by Martin Fowler, with Dave Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, and Randy Stafford”, “2002” — fetched 2026-10-30
- Martin Fowler — Patterns of Enterprise Application Architecture book page, structure. Quote: “The first part is a short (100 page) tutorial on enterprise application architecture. The bulk of the book is the reference to forty or so patterns.” — fetched 2026-10-30
- Martin Fowler — Patterns of Enterprise Application Architecture book page, topics. Quote: “The main topic areas are: how to layer an enterprise application, how to organize domain logic, how to tie that logic to a relational database” — fetched 2026-10-30
- InformIT (Addison-Wesley) — Enterprise Integration Patterns. Listing: “By Gregor Hohpe, Bobby Woolf”, “Published Oct 10, 2003 by Addison-Wesley Professional” — fetched 2026-10-30
- Gregor Hohpe — Enterprise Integration Patterns website. Quote: “This pattern language consisting of 65 integration patterns helps developers design and build distributed applications or integrate existing ones.” — fetched 2026-10-30
- Gregor Hohpe — Enterprise Integration Patterns, pattern catalog. The catalog lists “Publish-Subscribe Channel”, “Dead Letter Channel”, and “Idempotent Receiver” — fetched 2026-10-30
- InformIT (Addison-Wesley) — Design Patterns: Elements of Reusable Object-Oriented Software. Listing: “By Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides”, “Published Oct 31, 1994 by Addison-Wesley Professional” — fetched 2026-10-30
Open course
- MIT — 6.824 course home page, Spring 2022. Page heading: “6.824: Distributed Systems” — fetched 2026-10-30
- MIT 6.5840 — Spring 2026 schedule, lecture 3. Quote: “LEC 3 (fk): GFS. Preparation: Read GFS (2003)” — fetched 2026-10-30
- MIT 6.5840 — Spring 2026 schedule, lecture 6. Quote: “LEC 6 (fk): Fault Tolerance: Raft (1). Preparation: Read Raft (extended) (2014)” — fetched 2026-10-30
- MIT 6.5840 — Spring 2026 schedule, lecture 12. Quote: “LEC 12 (rtm): Spanner. Preparation: Read Spanner (2012)” — fetched 2026-10-30