System Design Introduction
System design interviews are used to check your thought process and how well you respond to the uncertain nature of an open-ended question in the given amount of time. So remember you are not expected to provide with a complete solution say in 1 hour but a working solution with limited functionality.
Things to keep in mind while giving system design interview
You need to keep in mind these 3 things while giving a system design interview.
- Don’t get overwhelmed by the problem
- Think before you speak
- Drive the discussion
Distributed Systems & Its 3 Principles
Any system which includes multiple components residing on multiple machines coordinating through some sort of mechanism like sending messages to achieve a common goal is a distributed system.
- Single responsibility principle — Each component present in System Design should have a single job to perform.
- No single point of failure principle — The system should never have any component whose failure will result in the failure of the entire system.
- No bottleneck principle — Since we design for scalability our system should not have performance bottlenecks. Ideally we should horizontally scale our system to handle the large amounts of processing.