System Design Flashcards

1
Q

Guidelines for tackling a system design problem

A
  1. Requirements Clarification - trying to define exactly and determine the exact scope of the problem to be solved.
  2. Back of the envelope estimation - try to determine the scale of what is to be built in terms of scaling, partitioning, load balancing and caching.
  3. System Interface Design - try to figure out the APIs needed to implement the functionalities drawn from steps 1 and 2. This will also help to figure out if you’ve misunderstood something
  4. Data model definition: - try to determine the needed entities and their relationships. How will these data be stored, transported or encrypted? What kind of database system will be used?
  5. High level design - try to draw out 5 or 6 boxes that show the various components of the required system. Client, load balancer, application server(s), databases, file storage.
  6. Detailed design: Dig deeper into each component and try to explain the pros and cons of the several ways of implementing a particular component.
    7: Resolving bottlenecks: try to discuss as many bottlenecks as possible and several ways to mitigate them.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly