Interviewer: Yes, it exists but not for engineers like you😂
In general interviewers may not be that rude. At least we can hope for the best. But if you are asked to design a system, you don't need to know whether such system exists or not. Your goal should be to use your fundamental tools and your execution method to begin and end. Never go with the expectations to get a known system design problem. Your approach of preparation should be very generic and not a system bound approach.
What is system bound approach?
It means that you solve each design problem using a very different technique or maybe you dig online to understand how they were designed. Your goal is not to know how they were designed but to understand how you would be designing it. This method gives you an idea of only one system. This approach fails to build the skill in you, the skill which could help you design a new system.
Prepare system design by mastering the important fundamentals. Things will automatically become easy for you. Most of us begin our system design journey by watching some videos of some systems and we start losing interest, why? Because we are yet to understand the details of the components used. For example, if we design a system and keep using the term Kafka, do you really think you would understand anything if you don't know what is Kafka and how it works? In fact, you will start losing interest, you will find system design really hard to understand.
So, the best way is to master on the tools.
“If I only had an hour to chop down a tree, I would spend the first 45 minutes sharpening my axe.” – Abraham Lincoln.
System design tools are the fundamentals that we would use to chop down a big system. But remember "A hammer cannot help you chop down a tree". So, just knowing how to use a hammer is not sufficient. But we need to understand how to use the important tools and apply them as required. So, for a system design we need to master on the most important fundamental components and use them as required to build any new system.
If you are always using a different approach to design a new system, then you are bound to fail on many System Design interviews List of must know fundamentals for system design interviews.
✅ Authentication and Authorization.
✅ Different protocols: HTTPS, Web Socket, HTTP Long polling, Gossip protocol.
✅ Gateway, Load balancers, Reverse proxy.
✅ Stateless servers and stateful servers.
✅ Microservices and Monoliths.
✅ Queues like Kafka, SQS, SNS, Azure event hub or any other queues.
✅ Cache and different cache implementations. Good to know about Redis and Memcached.
✅ Different databases (SQL, NoSQL, File storage, Blob storage).
✅ Compute techniques, distributed compute and stream processing.
✅ CDN
There are certainly a lot more components which are important tools and must be covered.
Below is the component diagram of some important fundamentals to cover to master any system design interviews.
Note: Below is not a design of any system but a component diagram to show how different components can be connected to make them work together.
Components of system design
Do like if you it added some value for you.
Happy learning System Design!
Subscribe to my newsletter for more insights on System Design.