Skip to main content

System Design Interview

This provides an excellent overview: https://www.hellointerview.com/learn/system-design/in-a-hurry/introduction

  • Everything here will mostly be a short write-up (maybe some more additional personal notes)

Delivery Framework

  • This is how we should structure our answer during the interview

Requirements 5 minutes Gather requirements for the problem

  • Functional requirements
    • Prioritized
    • List of core features that we must support (aim for about 3 core features)
  • Non-functional requirements
    • System requirements like availability and scalability, etc

Core Entities 2 minutes

  • Identify entities/top-level primitives that make up our products.
  • Should just list out the list here while checking in with the interviewer, no need to go into details of each

API or System Interface 5 minutes

  • Choose the right communication protocol
  • Design API endpoints

High Level Design: 10-15 minutes

  • Design database schema
  • Endpoint logic
  • Basic microservices architecture

Deep Dives 10 minutes

  • While doing everything above, we should keep a list of edge cases/ineffeciency in our designs and go over that here.
    • Example: an endpoint may works but for large volume of data can be really inefficient
  • Go over some non-functional requirements that we discussed earlier and discuss/improve the design

Core Concepts

Scaling

Consistency

  • Refers to how much users can tolerate getting stale data.
    • Strong consistency: after the data is written, all subsequent reads will reflect that write
    • Weak/eventual consistency: allows a period of time where the data is stale
  • Most real-life systems don't require strong consistency everywhere, but rather blend strong and weak consistency for different parts of the system.

Locking

Indexing

Communication Protocols

Security

Monitoring

Examples