PHASE 1 – Foundations
Goals
- Understand scalability basics
- Learn distributed system fundamentals
- Understand trade-offs
Concepts to Master
- What is High-Level Design?
- Latency vs Throughput
- Horizontal vs Vertical Scaling
- CAP Theorem
- ACID vs BASE
- Consistency Models
- Availability & Fault Tolerance
- Load vs Stress vs Spike testing
YouTube
-
Gaurav Sen – System Design Basics
-
Tech Dummies – System Design Playlist
https://www.youtube.com/playlist?list=PLkQkbY7JNJuDqCFncFdWzuVbOQZk6uKjT
-
MIT 6.824 Distributed Systems
Reading
-
System Design Interview – Alex Xu
→ Chapter 1 (Scaling from 0 to 1M users)
PHASE 2 – Core Components
Goal
Understand all building blocks deeply.
Load Balancers
- What is Load Balancing?
- Round Robin
- Least Connections
- Sticky Sessions
- L4 vs L7
Databases
SQL
- Indexing
- Normalization
- Transactions
- Replication
NoSQL
- Document DB
- Key-Value Store
- Wide Column
- When to use NoSQL
Caching (Redis)
- Cache Aside
- Write Through
- Write Back
- TTL
- Cache Invalidation
Message Queues (Kafka)
- What is Pub/Sub?
- Kafka Architecture
- Partitions
- Consumer Groups
- Exactly Once Semantics
CDN
- What is CDN?
- Edge locations
- Caching static content
Monitoring & Observability
- Logging
- Metrics
- Alerting
- Distributed tracing
Finish System Design Interview – Alex Xu Volume 1
PHASE 3 – Practice Real Systems
Goal
Start designing real systems.
For each system:
- Clarify requirements
- Estimate scale
- Draw architecture
- Define APIs
- Design DB schema
- Identify bottlenecks
- Scaling strategy
Practice Systems
- URL Shortener
- Twitter News Feed
- WhatsApp / Chat App
- Rate Limiter
- Distributed Cache
- Notification System
- E-Commerce Checkout
PHASE 4 – Deep Knowledge
Books
-
Start Volume 2 of Alex xu book
-
Designing Data-Intensive Applications
Focus on:
- Replication
- Partitioning
- Transactions
- Consensus
- Stream Processing
Read Blogs and videos for advanced designs