Reference and Selective Reading
You do not need to read the source books front-to-back for this module. Use the concept pages and practice pages first. Open these local chunks only when you need alternate exposition, a worked concrete example, or a deeper reference lane.
Source Roles
| Source | Role | Why it is here |
|---|---|---|
| System Design Primer (donnemartin) | Primary local source | Compact, canonical reference for the components on every box diagram (LB, CDN, cache, DB, queue) and for the latency numbers |
| Fundamentals of Software Architecture (Richards & Ford) | Selective support | Best vocabulary for architecture characteristics, trade-off analysis, and component-based thinking |
| System Design Interview (Alex Xu; external) | Primary reference text outside the local chunks | Use for end-to-end walk-throughs of classic problems when you want a worked-example alternative to the concept pages |
Read Only If Stuck
Cluster 1: Frame the Problem
- SDP 01: How to approach a system design interview
- SDP 02: Performance vs scalability
- SDP 03: Latency vs throughput
- SDP 23: Powers of two and latency numbers
- SDP 24: System design interview questions
- FoSA: Architecture characteristics defined
- FoSA: Cross-cutting architecture characteristics
- FoSA: Identifying architectural characteristics
- FoSA: Extracting characteristics from requirements
- FoSA: Measuring architecture characteristics
Cluster 2: High-Level Design
- SDP 08: Content delivery network
- SDP 09: Load balancer
- SDP 10: Reverse proxy
- SDP 11: Application layer and microservices
- SDP 12: Database RDBMS replication
- SDP 13: Database federation and sharding
- SDP 14: NoSQL databases
- SDP 15: SQL or NoSQL
- SDP 16: Cache overview and levels
- SDP 17: Cache update patterns
- SDP 18: Asynchronism
- SDP 25: Real-world architectures
- FoSA: Component-based thinking
- FoSA: Discovering components
Cluster 3: Deep Dive
- SDP 04: CAP theorem
- SDP 05: Consistency patterns
- SDP 06: Availability patterns
- SDP 12: Database RDBMS replication
- SDP 13: Database federation and sharding
- SDP 14: NoSQL databases
- SDP 18: Asynchronism
- SDP 19: Communication -- HTTP
- SDP 20: Communication -- TCP and UDP
- SDP 21: Communication -- RPC and REST
- FoSA: Connascence
- FoSA: Database partitioning
Cluster 4: Stress Test the Design
- SDP 02: Performance vs scalability
- SDP 04: CAP theorem
- SDP 06: Availability patterns
- SDP 09: Load balancer
- SDP 13: Database federation and sharding
- SDP 16: Cache overview and levels
- SDP 25: Real-world architectures
- FoSA: Analyzing trade-offs
Cluster 5: Communicate and Decide
- SDP 01: How to approach a system design interview
- SDP 24: System design interview questions
- SDP 25: Real-world architectures
- FoSA: Architectural thinking
- FoSA: Analyzing trade-offs
- FoSA: Identifying architectural characteristics
Optional Deep Dive
- SDP 22: Security -- only a pointer in this module; handled in detail in S9
- FoSA: Fitness functions -- for treating non-functional requirements as automatically-verified rules
- FoSA: Monolithic vs distributed architectures -- useful before S8M2 microservices
- FoSA: Architectural thinking -- re-read after completing the module to internalize mindset shift
Concept-to-Source Map
| Primary concept | Best source if stuck | Why this source |
|---|---|---|
| Understanding the requirements | FoSA: Extracting characteristics from requirements | Strongest formal account of going from requirement text to architecture pressure |
| Back-of-envelope estimation | SDP 23: Powers of two and latency numbers | Canonical numbers; worked with the estimation walk |
| Identifying the hard parts | FoSA: Identifying architectural characteristics | Best formal treatment of selecting what to prioritize |
| Draw the box diagram | SDP 25: Real-world architectures | Catalog of proven high-level shapes to compare against |
| Choose a storage approach | SDP 15: SQL or NoSQL | Short, correct decision framing; pairs with SDP 12-14 |
| Place the caches, CDN, load balancers | SDP 17: Cache update patterns | Strongest single chunk on cache semantics |
| Decompose each component | FoSA: Discovering components | Best treatment of decomposition heuristics |
| Data model design | SDP 13: Database federation and sharding | Best practical source for partitioning and index trade-offs |
| Concurrency, consistency, transaction boundaries | SDP 05: Consistency patterns | Short, correct framing of the available consistency models |
| Scale the hot path: 10x and 100x | SDP 02: Performance vs scalability | Compact statement of what scale actually changes |
| Reason about failure | SDP 06: Availability patterns | Best catalog of failover, replication, and health-check patterns |
| Identify bottlenecks and SPOFs | SDP 09: Load balancer + SDP 13: Database federation and sharding | Most SPOFs in modern designs live at the LB or the DB partition boundary |
| The four-phase interview/review structure | SDP 01: How to approach a system design interview | Canonical short reference for the phase structure |
| Articulating trade-offs | FoSA: Analyzing trade-offs | Best formal treatment of trade-off reasoning |
| Producing a design doc worth reviewing | FoSA: Architectural thinking | Captures the senior-reviewer mindset a doc must serve |