architect-handbook

Software Architect Handbook

View on GitHub

How To Approach

The system design interview is an open-ended conversation. You are expected to lead it.

You can use the following steps to guide the discussion. As an exercise, you can work through system design interview questions with solutions using these steps.

  1. Outline use cases, constraints, and assumptions.

  2. Create a high level design.

  3. Design core components.

  4. Scale the design.

1. Outline use cases, constraints and assumptions

Gather requirements and scope the problem. Ask questions to clarify use cases and constraints. Discuss assumptions.

2. Create a high level design

Outline a high level design with all important components.

3. Design core components

Dive into details for each core component.

For example, if you were asked to design a url shortening service, discuss:

4. Scale the design

Identify and address bottlenecks using principles of scalable system design, given the constraints.

For example, do you need the following to address scalability issues?

Discuss potential solutions and trade-offs. Everything is a trade-off.