Reading list
The books, papers, blogs and courses behind this course. You don't need to read them all: each item has one line on why it is worth your time and the class it supports, so you can pick what fits the topic you are studying. Start with the first five.
Start here: the first five
- Designing Data-Intensive Applications (Kleppmann & Riccomini) — chapters on replication, partitioning, transactions and consistency. The foundation for classes 3, 6 and 8.
- System Design Interview, vol. 1 (Alex Xu) — read one chapter per week alongside the case studies to see the interview format end to end.
- "The Tail at Scale" (Dean & Barroso, 2013) — six pages that explain why p99 matters more than the average. Read it with Class 2 · Percentiles.
- Site Reliability Engineering, chapters on SLOs, monitoring and handling overload (free online) — the "running it in production" half of system design.
- The Amazon Builders' Library articles on timeouts, retries, backoff and jitter — short, practical, and exactly what Class 10 and Hands-on 9 put into code.
Books
| Book | Authors | Why read it | Supports |
|---|---|---|---|
| Designing Data-Intensive Applications, 2nd ed. | Martin Kleppmann, Chris Riccomini | The clearest explanation of replication, partitioning, transactions, consistency and streams, from first principles | 3, 6, 8 |
| System Design Interview, vol. 1 and vol. 2 | Alex Xu (vol. 2 with Sahn Lam) | Classic interview problems worked step by step, with estimates and diagrams | 1, 15 |
| Site Reliability Engineering and The Site Reliability Workbook | Google (Beyer, Jones, Petoff, Murphy, eds.) | SLOs, error budgets, alerting, overload and incident response as practiced at Google; free online | 9, 10 |
| Release It!, 2nd ed. | Michael T. Nygard | Stability patterns (timeouts, circuit breakers, bulkheads) and anti-patterns, told through real outages | 9 |
| Building Microservices, 2nd ed. | Sam Newman | When to split a monolith, service boundaries, communication styles, and the costs of microservices | 5 |
| Fundamentals of Software Architecture | Mark Richards, Neal Ford | Architecture characteristics ("-ilities"), styles and how to reason about trade-offs | 1, 5 |
| Software Architecture: The Hard Parts | Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani | Decomposing services and data, distributed transactions and sagas, framed as trade-off analysis | 5, 8 |
| Understanding Distributed Systems | Roberto Vitillo | A short, approachable tour of communication, coordination, scalability and resiliency | 3, 4 |
| Database Internals | Alex Petrov | How storage engines (B-trees, LSM-trees) and distributed databases work inside | 6 |
| Systems Performance, 2nd ed. | Brendan Gregg | Performance methodology (USE method), observability tools and profiling on Linux | 14 |
| Observability Engineering | Charity Majors, Liz Fong-Jones, George Miranda | Why high-cardinality events and traces beat dashboards of averages; SLO-based alerting | 10 |
| Kubernetes: Up and Running | Brendan Burns, Joe Beda, Kelsey Hightower, Lachlan Evenson | The core Kubernetes objects explained by people who built it | 12 |
| AI Engineering | Chip Huyen | Building applications on foundation models: evaluation, RAG, agents, latency and cost | 13 |
| Cracking the Coding Interview, 6th ed. | Gayle Laakmann McDowell | The interview process in general; its chapter on scalability inspired the "how to answer" principles | Support › Interview |
Classic papers
Papers are shorter than books and often clearer: they were written to convince skeptical experts. Read the abstract, the introduction and the figures first.
| Paper | Authors, venue, year | Why read it | Supports |
|---|---|---|---|
| Time, Clocks, and the Ordering of Events in a Distributed System | Leslie Lamport, Communications of the ACM, 1978 | Introduces happened-before and logical clocks: why "what happened first" is hard | 3 · Time & clocks |
| Paxos Made Simple | Leslie Lamport, ACM SIGACT News, 2001 | The consensus algorithm behind decades of systems, in a few pages | 3 · Consensus |
| Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services | Seth Gilbert, Nancy Lynch, ACM SIGACT News, 2002 | The formal proof of the CAP theorem that Eric Brewer conjectured in his PODC 2000 keynote | 3 · CAP & PACELC |
| The Google File System | Ghemawat, Gobioff, Leung, SOSP 2003 | Designing storage for commodity machines that fail all the time | 6 |
| MapReduce: Simplified Data Processing on Large Clusters | Jeffrey Dean, Sanjay Ghemawat, OSDI 2004 | The programming model that made batch processing at scale accessible | 6 · Specialized |
| Bigtable: A Distributed Storage System for Structured Data | Chang et al., OSDI 2006 | The wide-column model behind HBase and Cassandra's data model | 6 · Models |
| The Chubby Lock Service for Loosely-Coupled Distributed Systems | Mike Burrows, OSDI 2006 | Coarse-grained locks and leader election as a service | 5 · Async work |
| Dynamo: Amazon's Highly Available Key-value Store | DeCandia et al., SOSP 2007 (allthingsdistributed.com) | Consistent hashing, quorums, hinted handoff and vector clocks in one production system | 3, 6 · Partitioning |
| ZooKeeper: Wait-free Coordination for Internet-scale Systems | Hunt, Konar, Junqueira, Reed, USENIX ATC 2010 | A coordination service that many systems (including older Kafka) relied on | 3 · Consensus |
| Kafka: a Distributed Messaging System for Log Processing | Jay Kreps, Neha Narkhede, Jun Rao, NetDB 2011 | The original design of the log-based broker used throughout the course | 8 · Kafka |
| Spanner: Google's Globally-Distributed Database | Corbett et al., OSDI 2012 | Externally consistent transactions across the planet, using TrueTime | 6 · Replication, 3 |
| Consistency Tradeoffs in Modern Distributed Database System Design | Daniel Abadi, IEEE Computer, 2012 | Introduces PACELC: the latency vs consistency trade-off that exists even without partitions | 3 · CAP & PACELC |
| The Tail at Scale | Jeffrey Dean, Luiz André Barroso, Communications of the ACM, 2013 | Why tail latency dominates fan-out systems, and techniques such as hedged requests | 2 · Percentiles |
| Scaling Memcache at Facebook | Nishtala et al., NSDI 2013 | Caching at enormous scale: leases against stampedes, regional pools, invalidation | 7 |
| TAO: Facebook's Distributed Data Store for the Social Graph | Bronson et al., USENIX ATC 2013 | A read-optimized graph cache in front of MySQL serving billions of reads per second | 7, 15 |
| In Search of an Understandable Consensus Algorithm (Raft) | Diego Ongaro, John Ousterhout, USENIX ATC 2014 (raft.github.io) | Consensus designed to be understood: leader election and log replication | 3 · Consensus |
| Large-scale Cluster Management at Google with Borg | Verma et al., EuroSys 2015 | The ancestor of Kubernetes: scheduling, bin packing, and lessons learned | 12 · Kubernetes |
| Attention Is All You Need | Vaswani et al., NeurIPS 2017 | The transformer architecture behind today's LLMs; read for context, not for the math | 13 |
| Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks | Lewis et al., NeurIPS 2020 | The paper that named RAG: combining a retriever with a generator | 13 · RAG & memory |
| ReAct: Synergizing Reasoning and Acting in Language Models | Yao et al., ICLR 2023 | The reason-act-observe loop that most agent frameworks implement | 13 · Agents |
Engineering blogs
Real systems, real outages, real trade-offs. Search them for the topic of the week.
| Blog | Why read it | Supports |
|---|---|---|
| The Amazon Builders' Library | How Amazon builds and operates services: timeouts and retries, load shedding, caching, deployments | 9, 12 |
| AWS Architecture Blog | Reference architectures and patterns on AWS | 12 |
| Google Cloud Architecture Center | Reference architectures, including for AI and data systems | 12, 13 |
| Netflix Tech Blog | Chaos engineering, resilience, video delivery and large-scale microservices | 9, 15 |
| Meta Engineering | Caching, data infrastructure and reliability at the scale of billions of users | 6, 7 |
| Uber Engineering | Geospatial indexing, real-time dispatch and large microservice architectures | 15 |
| Discord Engineering | Storing trillions of messages, real-time fan-out, database migrations told in detail | 6, 15 |
| The Cloudflare Blog | DNS, CDN, DDoS mitigation and honest post-mortems of global outages | 4, 10 |
| Stripe Engineering | Idempotency, API design and reliability for payments | 5 · Integrations |
| Shopify Engineering | Surviving flash sales (Black Friday) on a modular monolith | 5, 14 |
| Slack Engineering | Real-time messaging infrastructure and incident write-ups | 8, 10 |
| Marc Brooker's blog | Short, rigorous essays on retries, queues, tail latency and distributed systems | 2, 9 |
| Martin Fowler | Patterns of distributed systems and enterprise architecture, microservices trade-offs | 5, 8 |
| Brendan Gregg | Performance methodology, flame graphs and Linux observability | 14 |
| Jepsen | Independent analyses of what distributed databases really guarantee under failure | 3 · Consistency |
| High Scalability | Long-running collection of architecture case studies | 15 |
| ByteByteGo | Visual, interview-oriented explanations of system design topics | Support › Interview |
Courses and free resources
| Resource | Why use it | Supports |
|---|---|---|
| MIT 6.5840 Distributed Systems | Lectures, paper readings and labs (Raft, a sharded key-value store) from one of the best distributed-systems courses | 3 |
| The System Design Primer | Free, organized study guide with topics, flashcards and worked problems | Support › Interview |
| AWS Well-Architected Framework | Six pillars and concrete review questions to ask of any design | 1, 12 |
| Azure Architecture Center | Cloud design patterns catalog (retry, circuit breaker, CQRS, saga…) with clear diagrams | 8, 9 |
| Google SRE resources | The SRE books plus articles on SLOs and incident response | 9, 10 |
| CNCF Landscape | Map of the cloud-native ecosystem: where each tool fits | 12 |
| OpenTelemetry documentation | Concepts and language guides for metrics, logs and traces | 10 · OpenTelemetry |
| Kubernetes documentation | The concepts section is an excellent free textbook | 12 · Kubernetes |
| Latency numbers every programmer should know | The classic table behind every estimate | 2 · Numbers, Reference › Numbers |
How to read a paper in 30 minutes
Read the title, the abstract and the conclusion; look at every figure and table; then read the introduction and the design section. Skip the evaluation details on a first pass. Write three lines: the problem, the key idea, and the trade-off the authors accepted. That third line is the one you will use in an interview.