System Design Topics
There is no end to what you can know about designing systems. However when preparing for interviews, make sure you are aware of most commonly asked questions/concepts
Concepts
Fundamental Concepts
- Networks & Protocols (IP, DNS, HTTP, TCP etc)
- Storage, Latency & Throughput
- Availability
- Caching
- Proxies
- Load Balancing
- Consistent Hashing
- Databases
- Leader Election
- Polling, Streaming, Sockets
- Endpoint Protection
- Messages & Pub-Sub
Advanced Concepts
- Database Internals
Papers Published
- Amazon - Dynamo DB pdf
- Facebook - Cassandra pdf
- Facebook - Scaling Memcache at Facebook pdf
- Google - Web Search pdf
- LinkedIn - Expresso Document DB pdf
System to Design
Fundamental
- Design a Rate Limiter
- Design Consistent Hashing
- Design a key-value store
- Design a Unique ID Generator in distributed system
- Url Shortener
Intermediate
- Design a Typeahead (search auto-complete)
Advanced
- Design a Web Crawler
- Design a Notification System
- Design a News Feed System
- Design a Chat System
- Design YouTube/Netflix
- Design Google Drive
References
- FreeCodeCamp - System Design Fundamentals
- GitHub - Donne Martin - System Design Primer