0 of 47 lessons completed
Home / System Design
System Design
System design from zero: clarifying requirements, estimating scale, load balancing, caching, databases, sharding and reliability. Every number is worked in the open and checked.
Start learning β―β―47 lessons Β· 14 topics Β· 0/47 completed
Course contents
Work top to bottom β the sidebar is the course. Topics later in the list assume the ones before them.
What Is System Design
Beginner Β· β± 6 min Β· standalone lesson
The Interview Roadmap
Start: Clarify the Requirements β―Scale and Estimation
- Thinking in Scale
- Latency and Throughput
- Latency Numbers Worth Knowing
- Back-of-Envelope Estimation
- Estimating Storage and Bandwidth
Requests End to End
Start: Clients and Servers β―Scaling the App Tier
Start: Vertical and Horizontal Scaling β―Caching
- Caching: Where and Why
- Cache-Aside and Read-Through
- Write-Through and Write-Back
- Eviction and Invalidation
Content and Files
Start: What a CDN Does β―Databases at Design Level
Start: SQL or NoSQL β―Partitioning and Sharding
Start: Why Partition Data β―Consistency and Availability
- Consistency in Plain Words
- Availability in Plain Words
- The CAP Theorem
- Strong and Eventual Consistency
Async Work
Start: Message Queues β―Services and APIs
Start: Monolith or Microservices β―Reliability
Start: Single Points of Failure β―Design a Photo-Sharing App
Beginner Β· β± 12 min Β· standalone lesson