This is a definitive roadmap of system design for software engineers with no prior experience on the subject. If you are someone preparing for interview rounds of Google, Facebook, Amazon, Netflix. Look no further.
At the end of this article, you will be confident about cracking system design interviews with a roadmap of different topics and questions. Also, you will be well prepared before joining these companies, as you will have adequate knowledge.
Additionally, you can check Gaurav’s course, we at takeuforward highly recommend it out of all available in the market, because of the pricing[lifetime validity], the quality of the lectures, and the amazing forum with so many talented engineers including managers, leads, and directors.
For DSA, check out our A2Z Course with 455 modules: Link
Large companies have large user bases. These users are spread across the world, and expect their web requests to be loaded quickly and reliably.
Keeping users happy is directly proportional to company revenue. Hence, it makes sense for a company to build its computer systems so they may continue to function despite problems:
1. Disasters (Tsunami, Fire, etc.)
2. Power outages (Legal issues, bill payments, etc.)
3. Hardware failures (Computer crashes, clock skew, etc.)
4. Software Failures (Incompatible upgrades, OS fault, etc.)
As an engineer, it’s our job to expect and mitigate these problems. Instead of fixing issues reactively, system design solves these problems proactively.
Even before a single line of code is written, the engineers discuss how to meet requirements, the possible problems that can occur, and how to tackle them.
In short,billions of dollars are on the line, because trusted websites get happy customers!
Where do I start with System Design?
CAUTION: Don’t hunt all the “How to Start” videos before you start! When you come across something you don’t know, study it in depth and return to the topic.For search trees with infinite depth, DFS is more efficient than BFS!
The following plan will set you on the path to mastering these best software engineering practices, which is also known as system design:
Part 1: Basics(0/12)
Action | Problem [Articles, Codes] | Solution | Notes | Company |
---|---|---|---|---|
What is System Design? | ||||
Horizontal vs. Vertical Scaling | ||||
What is Capacity Estimation? | ||||
What is HTTP? | ||||
What is the Internet TCP/IP stack? | ||||
What happens when you enter Google.com? | ||||
What are Relational Databases? | ||||
What are Database Indexes? | ||||
What are NoSQL databases? | ||||
What is a Cache? | ||||
What is Thrashing? | ||||
What are Threads? |
Part 2: Load Balancing(0/3)
Action | Problem [Articles, Codes] | Solution | Notes | Company |
---|---|---|---|---|
What is Load Balancing? | ||||
What is Consistent Hashing? | ||||
What is Sharding? |
Part 3: DataStores(0/5)
Action | Problem [Articles, Codes] | Solution | Notes | Company |
---|---|---|---|---|
What are Bloom Filters? | ||||
What is Data Replication? | ||||
How are NoSQL databases optimized? | ||||
What are Location-based Databases? | ||||
Database Migrations |
Part 4: Consistency vs. Availability(0/3)
Action | Problem [Articles, Codes] | Solution | Notes | Company |
---|---|---|---|---|
What is Data Consistency? | ||||
Data Consistency Levels | ||||
Transaction Isolation Levels |
Part 5: Message Queues(0/4)
Action | Problem [Articles, Codes] | Solution | Notes | Company |
---|---|---|---|---|
What is a Message Queue? | ||||
What is the publisher-subscriber model? | ||||
What are event-driven systems? | ||||
Database as a Message Queue |
Part 6: DevOps Concepts(0/6)
Action | Problem [Articles, Codes] | Solution | Notes | Company |
---|---|---|---|---|
What is a Single Point of Failure? | ||||
What are Containers? | ||||
What is Service Discovery and Heartbeats? | ||||
How to avoid Cascading Failures? | ||||
Anomaly Detection in Distributed Systems | ||||
Distributed Rate Limiting |
Part 7: Caching(0/4)
Action | Problem [Articles, Codes] | Solution | Notes | Company |
---|---|---|---|---|
What is Distributed Caching? | ||||
What are Content Delivery Networks? | ||||
Write Policies | ||||
Replacement Policies |
Part 8: Microservices(0/2)
Action | Problem [Articles, Codes] | Solution | Notes | Company |
---|---|---|---|---|
Microservices vs. Monoliths | ||||
How monoliths are migrated |
Part 9: API Gateways(0/2)
Action | Problem [Articles, Codes] | Solution | Notes | Company |
---|---|---|---|---|
How are APIs designed? | ||||
What are asynchronous APIs? |
Part 10: Authentication Mechanisms(0/3)
Action | Problem [Articles, Codes] | Solution | Notes | Company |
---|---|---|---|---|
OAuth | ||||
Token Based Auth | ||||
Access Control Lists and Rule Engines |
Part 11: System Design Tradeoffs(0/6)
Action | Problem [Articles, Codes] | Solution | Notes | Company |
---|---|---|---|---|
Pull vs. Push | ||||
Memory vs. Latency | ||||
Throughput vs. Latency | ||||
Consistency vs. Availability | ||||
Latency vs. Accuracy | ||||
SQL vs. NoSQL databases |
Part 12: Practice Problems(0/17)
Action | Problem [Articles, Codes] | Solution | Notes | Company |
---|---|---|---|---|
System Design of a Live-Streaming App | ||||
System Design of Instagram | ||||
System Design of Tinder | ||||
System Design of WhatsApp | ||||
System Design of TikTok | ||||
System Design of an Online Coding Judge – … | ||||
System Design of an Online Coding Judge – … | ||||
System Design of UPI Payments | ||||
System Design of IRCTC | ||||
System Design of Netflix Video Onboarding … | ||||
System Design of Doordash | ||||
System Design of Amazon Online Shops | ||||
System Design of Google Maps | ||||
System Design of Gmail | ||||
System Design of a Chess Website | ||||
System Design of Uber | ||||
System Design of Google Docs |
Part 13: Additional Resources(0/3)
Action | Problem [Articles, Codes] | Solution | Notes | Company |
---|---|---|---|---|
InterviewReady Course | ||||
GitHub Page | ||||
Designing Data-Intensive Applications |
Summary
Every search on Google, every message on WhatsApp, and every App Update is the result of thousands of engineers’ efforts.
These engineers have found common best practices that help them handle millions of user requests in real time.
All the best!