Showing posts with label System Design. Show all posts
Showing posts with label System Design. Show all posts

Saturday, June 13, 2020

System Design, Approach a problem

Feature expectations 
  1. It is extremely important part, hence get a very clear understanding of whats the requirement for the question.
Estimations
  1. Next step is usually to estimate the scale required for the system. The goal of this step is to understand the level of sharding required ( if any ) and to zero down on the design goals for the system.
  2. For example, if the total data required for the system fits on a single machine, we might not need to go into sharding and the complications that go with a distributed system design.
  3. OR if the most frequently used data fits on a single machine, in which case caching could be done on a single machine.

Design Goals                                                                                                                             
Figure out what are the most important goals for the system. It is possible that there are systems which are latency systems in which case a solution that does not account for it, might lead to bad design.

Skeleton of the design 
30-40 mins is not enough time to discuss every single component in detail. As such, a good strategy is to discuss a very high level with the interviewer and go into a deep dive of components as enquired by the interviewer.

Deep dive