Gather all requirements:
- Functional Requirements
- Non Functional Requirements
- Costing Limitation
Understand the expectation like
Selecting Various component which has fulfilled all the functional and non-functional requirements while meeting the constraints.
In this kind of interview are not hard to come up with solutions. But what we need to prove that, find which approach is suitable for the requirements.
And I will tell you the fun fact there is no one absolute solution to any problems. There can be multiple ways in which to design the uber, Facebook, NetFlix, and so on.
We have come up with approach 1 and approach 2 and take a decision on which approach is suitable. Sometimes both approaches will merge and that’s works perfect. Decision-making is the key role of the system design approaches.
While designing considering:
- pick up the component
- Select DataStore
- Types of Architecture – 1) event-driven or 2) Transactional
- Number of Transaction
- Number of Requests
- Number of Users
Think about what components are required as per requirements and start designing and coming up with the solutions.
Even after designing Architecture, your job doesn’t get over. You have to think about the future what are the places or the scenarios where the system is going to fail and what are the limitation of the system and what would be the follow-up and what would be version 2 of the system. That’s really important when comes to designing the system.
Example of System Design Architecture:
1. What is a System?
Architecture or collection of software(Technologies) that communicate with each other interact in order to serve a certain set of users to a certain set of requirements.
Example of System:
Example applications: Instagram, Whatsapp, Netflix and Hotstar
2. What is Design?
Design is a process of understanding the user requirements and selecting the components, modules, and software technologies and how they are interlinked and communicate with each were actually serve the needs of the system.
3. Why System Design?
System Design is the process of designing the architecture, components, and interfaces for a system so that it meets the end-user requirements.
Let’s now see what are the components of system design?