Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Tip

Starting from Alex Xu (book), a 4-step process for effective system design would be great !

Step 1 : Understand the problem and establish the design scope

  • Understand the context and the constraints : ask questions to establish the type of constraints (technological, infra, etc.).
  • What specific features we are going to build ?
  • How many users does the product have ? How many users do we expect in the future ?
  • How fast the company anticipate to scale up ? 3 months, 6 months and 1 year ?
  • What is the company's technology stack ? What is the technological legacy ? What existing services we might leverage to simplify the design ?

Example of questions : What is the traffic volume ? What is the expected traffic volume after a time X ? etc.

Step 2 : Establish a high-level design 

  • Establish an initial blueprint for the design according the step 1 : for example, is the organization going hybrid in the first step ?
  • Draw the design with key components :
    • client layer (mobile/web, etc...), APIs, Web servers, data store, cache, CDN, message queue, etc.
  • Estimate the system capacity or performance requirements (See the page "Back-of-the-envelope calculation").

If possible, go through a few concrete use cases says Alex Xu !


Panel

On this page:

Table of Contents


Step 3 : Design deep dive

Here are some tips for organizing your content.

  • Change the page order

The sidebar on the left displays your pages in a hierarchy. If you have Space Administrator permissions you can click "Space Tools" > "Reorder Pages" to move pages around.


Step 4 : Establish the pros and the cons