This folder contains materials for systematically learning System Design. You can learn step-by-step from core concepts to practical patterns needed to design large-scale systems. It supports both technical interview preparation and practical architecture design.
Target Audience: Backend developers, system architects, technical interview candidates
[Basics] [Intermediate] [Advanced]
│ │ │
▼ ▼ ▼
System Design Overview ──▶ Load Balancing ─────▶ Distributed Cache
│ │ │
▼ ▼ ▼
Scalability Basics ─────▶ Reverse Proxy ─────▶ Database Scaling
│ │ │
▼ ▼ ▼
Network Review ──────────▶ Caching Strategy ───▶ Database Replication
│ │ │
▼ ▼ ▼
API Gateway ─────────▶ Message Queue
│
▼
Microservices
│
▼
Distributed Systems
│
▼
Practical Design
-
Required
- Networking basics (HTTP, DNS, TCP/IP) → Networking/
- Database basics (SQL, transactions) → PostgreSQL/
- At least 1 programming language
-
Recommended
- Linux basic commands → Linux/
- Docker basics → Docker/
- REST API concepts → Web_Development/
| Filename | Difficulty | Key Topics |
|---|---|---|
| 01_System_Design_Overview.md | ⭐ | What is system design, interview criteria, problem approach framework |
| 02_Scalability_Basics.md | ⭐⭐ | Vertical/horizontal scaling, CAP theorem, PACELC |
| 03_Network_Fundamentals_Review.md | ⭐⭐ | DNS, CDN, HTTP/2/3, REST vs gRPC |
| Filename | Difficulty | Key Topics |
|---|---|---|
| 04_Load_Balancing.md | ⭐⭐⭐ | L4/L7 load balancers, distribution algorithms, health checks |
| 05_Reverse_Proxy_API_Gateway.md | ⭐⭐⭐ | Reverse proxy, API Gateway, Rate Limiting |
| Filename | Difficulty | Key Topics |
|---|---|---|
| 06_Caching_Strategies.md | ⭐⭐⭐ | Cache-Aside, Write-Through, cache invalidation |
| 07_Distributed_Cache_Systems.md | ⭐⭐⭐ | Redis, Memcached, consistent hashing |
| Filename | Difficulty | Key Topics |
|---|---|---|
| 08_Database_Scaling.md | ⭐⭐⭐ | Partitioning, sharding strategies, rebalancing |
| 09_Database_Replication.md | ⭐⭐⭐ | Leader replication, Quorum, failure recovery |
| 10_Data_Consistency_Patterns.md | ⭐⭐⭐ | Consistency models, eventual consistency, strong consistency |
| Filename | Difficulty | Key Topics |
|---|---|---|
| 11_Message_Queue_Basics.md | ⭐⭐⭐ | Async processing, Kafka, RabbitMQ |
| 12_Message_System_Comparison.md | ⭐⭐⭐⭐ | Kafka vs RabbitMQ, use cases |
| Filename | Difficulty | Key Topics |
|---|---|---|
| 13_Microservices_Basics.md | ⭐⭐⭐⭐ | Monolith vs MSA, service decomposition |
| 14_Microservices_Patterns.md | ⭐⭐⭐⭐ | Service mesh, Circuit Breaker, Saga |
| Filename | Difficulty | Key Topics |
|---|---|---|
| 15_Distributed_Systems_Concepts.md | ⭐⭐⭐⭐ | Distributed system properties, failure models |
| 16_Consensus_Algorithms.md | ⭐⭐⭐⭐⭐ | Raft, Paxos, leader election |
| Filename | Difficulty | Key Topics |
|---|---|---|
| 17_Design_Example_1.md | ⭐⭐⭐ | URL shortener, Pastebin design |
| 18_Design_Example_2.md | ⭐⭐⭐⭐ | Chat system, notification system design |
| Filename | Difficulty | Key Topics |
|---|---|---|
| 19_Observability_Monitoring.md | ⭐⭐⭐⭐ | Three pillars, Prometheus, ELK, OpenTelemetry, SLO/SLI |
| 20_Search_Systems.md | ⭐⭐⭐⭐ | Elasticsearch, inverted index, BM25, scaling search |
01_System_Design_Overview → 02_Scalability_Basics → 03_Network_Fundamentals_Review
Learn core concepts and interview approach to system design.
04_Load_Balancing → 05_Reverse_Proxy_API_Gateway
Learn traffic distribution and API management.
06_Caching_Strategies → 07_Distributed_Cache_Systems
Take a deep dive into caching, which is core to performance optimization.
08_Database_Scaling → 09_Database_Replication → 10_Data_Consistency_Patterns
Learn DB scaling strategies for large-scale data.
11_Message_Queue_Basics → 12_Message_System_Comparison → 13_Microservices_Basics → 14_Microservices_Patterns
Learn async processing and distributed architecture patterns.
15_Distributed_Systems_Concepts → 16_Consensus_Algorithms → 17_Design_Example_1 → 18_Design_Example_2
Cover distributed systems theory and practical design problems.
19_Observability_Monitoring → 20_Search_Systems
Learn system monitoring, alerting, and search system design.
┌─────────────────────────────────────────────────────────────────┐
│ System Design Interview 4 Steps │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. Clarify Requirements (5 min) │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ • Confirm functional requirements │ │
│ │ • Non-functional requirements (performance, etc.) │ │
│ │ • Scale estimation (users, traffic) │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ 2. Back-of-the-envelope Calculation (5 min) │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ • QPS (Queries Per Second) │ │
│ │ • Storage capacity │ │
│ │ • Bandwidth │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ 3. High-Level Design (15-20 min) │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ • Main component diagram │ │
│ │ • Data flow │ │
│ │ • API design │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ 4. Detailed Design (15-20 min) │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ • Database schema │ │
│ │ • Scaling strategy │ │
│ │ • Trade-offs discussion │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
| Topic | Key Concepts | Related Files |
|---|---|---|
| URL Shortener | Hash function, Base62 | 08, 07 |
| Chat System | WebSocket, message queue | 03, 11 |
| News Feed | Fan-out, caching | 06, 07 |
| Search Engine | Inverted index, sharding | 08 |
| Notification System | Message queue, priority | 11, 12 |
| File Storage | Distributed storage, chunks | 08, 09 |
- Did you clarify requirements?
- Did you estimate scale?
- Did you draw high-level architecture?
- Did you design data model?
- Did you identify bottlenecks?
- Did you propose scaling strategy?
- Did you discuss trade-offs?
| Folder | Related Content |
|---|---|
| Networking/ | DNS, HTTP, TCP/IP, network security |
| PostgreSQL/ | Database, transactions, replication |
| Docker/ | Containerization, microservices deployment |
| Linux/ | Server management, performance monitoring |
- Designing Data-Intensive Applications - Martin Kleppmann
- System Design Interview - Alex Xu
- Building Microservices - Sam Newman
- Web Scalability for Startup Engineers - Artur Ejsmont
- System Design Primer (GitHub)
- Grokking System Design (Educative)
- High Scalability Blog
- ByteByteGo Blog
- Draw Diagrams: Draw system architectures yourself
- Estimation Skills: Get familiar with QPS and storage capacity calculations
- Trade-offs: Every decision has pros and cons
- Real Examples: Analyze architectures of large services
- Interview Practice: Practice explaining out loud
Document Information
- Last Updated: January 2026
- Total Study Time: Approximately 6-8 weeks