The System Design Process

Step 1: Constraints and use cases

  • clarify the system's constraints and to identify what use cases the system needs to satisfy.
    • use cases : how user will use it ? what kind of features should it have?
    • constraints:
      • the amount of traffic the system should handle
      • the amount of data the system should work with

Step 2: Abstract design

  • make sure you sketch the important components and the connections between them.
  • Justify your ideas in front of the interviewer and try to address every constraint and use case.

Step 3: Understanding bottlenecks

  • identify the weak spots in a system and be able to resolve them.
  • usually each solution is a trade-off of some kind.
  • the important thing is to be able to talk about these trade-offs, and to measure their impact on the system given the constraints and use cases defined.

Step 4: Scaling your abstract design

  • making your system scale.

Summary:

  1. Scope the problem: Don't make assumptions; Ask questions; Understand the constraints and use cases.
  2. Sketch up an abstract design that illustrates the basic components of the system and the relationships between them.
  3. Think about the bottlenecks these components face when the system scales.
  4. Address these bottlenecks by using the fundamentals principles of scalable system design.

results matching ""

    No results matching ""