System Design Process

Step 1: Outline use cases, constraints, and assumptions

  • Gather requirements and scope the problem.
  • Clarify the use cases, system's constraints
  • Discuss about your assumptions

Questions to Ask

  • Who is going to use it?
  • How are they going to use it?
  • How many users are there?
  • What does the system do?
  • What are the inputs and outputs of the system?
  • How much data do we expect to handle?
  • How many requests per second do we expect?
  • What is the expected read to write ratio?

Step 2: Create a high level design

Outline a high level design with all important components.

  • Walk through your system from end-to-end
  • Sketch a high-level abstract design.
  • The goal of this is to outline all the important components that your architecture will need.

Step 3: Design core components

Dive into details for each core component.

Step 4: Scale the design

Identify and address bottlenecks, given the constraints. For example, do you need the following to address scalability issues?

  • Load balancer
  • Horizontal scaling
  • Caching
  • Database sharding

results matching ""

    No results matching ""