Designing Data-Intensive Applications (Martin Kleppmann) — The definitive book on distributed systems, storage, replication, partitioning, and consistency. Read this cover to cover.
System Design Interview — An Insider's Guide (Alex Xu) — Practical interview-focused case studies with clear diagrams. Volumes 1 and 2.
System Design Interview: A Step-by-Step Guide (Franklin Zhang) — Additional case studies with a structured approach.
The Art of Scalability (Abbott, Fisher) — Fundamentals of scaling web applications, organizational aspects, and architecture patterns.
Building Microservices (Sam Newman) — Practical guidance on microservice architecture, communication patterns, and operational concerns.
Database Internals (Alex Petrov) — Deep dive into how databases work internally: B-trees, LSM trees, replication, and distributed algorithms.
Free Resources
System Design Primer (GitHub: donnemartin/system-design-primer) — Community-driven collection of resources, case studies, and flash cards.
High Scalability Blog (highscalability.com) — Real-world system architecture breakdowns, "everything Google/Amazon/Uber/Facebook builds."
ByteByteGo Newsletter — Visual deep-dives into system design concepts. Weekly diagrams and explanations.
Awesome System Design (GitHub: mbahadirdogan/awesome-system-design) — Curated list of learning resources.
Stripe Blog — Payments architecture, API design, idempotency, fraud detection.
Cloudflare Blog — CDN, DDoS protection, edge computing, networking.
Engineering at Meta — Social graph, news feed, video infrastructure, ML systems.
Slack Engineering — Real-time messaging, search, mobile performance.
Key Papers Every Engineer Should Read
The Google File System (Ghemawat, Gobioff, Leung — 2003)
MapReduce: Simplified Data Processing on Large Clusters (Dean, Ghemawat — 2004)
Bigtable: A Distributed Storage System for Structured Data (Chang et al. — 2006)
Dynamo: Amazon's Highly Available Key-value Store (DeCandia et al. — 2007)
Spanner: Google's Globally-Distributed Database (Corbett et al. — 2012)
Kafka: A Distributed Messaging System for Log Processing (Kreps, Narkhede, Rao — 2011)
Raft: In Search of an Understandable Consensus Algorithm (Ongaro, Ousterhout — 2014)
The Anatomy of a Large-Scale Hypertextual Web Search Engine (Brin, Page — 1998)
ZooKeeper: Wait-free Coordination for Internet-scale Systems (Hunt et al. — 2010)
Taming the Long Tail of Content (Netflix — 2023)
Tools to Practice
draw.io / diagrams.net — Free diagramming tool for architecture diagrams.
Excalidraw — Hand-drawn style whiteboard for quick sketches.
Miro — Collaborative whiteboard for mock interviews.
DB diagram tools: dbdiagram.io, QuickDBD — For database schema design.
Diagrams as code: Mermaid.js, PlantUML — Version-control your architecture diagrams.
Mock Interview Platforms
Pramp — Free peer-to-peer mock interviews with structured feedback.
interviewing.io — Anonymous technical interviews with real engineers from top companies.
Meetup groups: System design study groups in your city or online.
Pair practice: Find a friend and trade system design mocks weekly.
Final Advice
System design is not about memorizing solutions — it is about developing the instincts to analyze a problem, weigh trade-offs, and make defensible decisions under constraints. The more systems you study, build, and break, the stronger those instincts become. Go build something that scales.