Skip to content

ryanluu12345/system-design-guide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

System Design Guide

The purpose of this guide is to give a condensed guide and links to references for system design practice.

Pre-requisite steps

Recommended study sequence

  • Gain context on the main components in system design (read the system design primer)
  • Practice questions about building systems (i.e. design postmates)
  • Get feedback from more senior engineers
  • Watch videos of actual interviews and see how they approach

Recommended thought process

  1. Define requirements
  • Functional: how it supposed to work? what does it need to do?
  • Non-Functional: what are latency, availalability, or consistency requirements? How much scale are we looking at?
  1. Ask clarifying questions (examples below)
  • Who are the customers?
  • What's the scale?
  • Do we need to support more complex requirements like multi-tenancy?
  1. Overarching design
  • Draw box diagrams for each of the major components
  • Connect boxes with lines and write how they interact with each other (i.e. REST, gRPC, GraphQL?)
  • Do back of the envelope calculations to figure out the optimizations needed in the design (i.e. load balancing or sharding or federation)
  1. Specific component decomposition
  • What do each of the specific services or components do?
  • How do they interact?
  • What are the tradeoffs with the components or interactions?
  • What are specifics that need to be addressed here?
  1. Further optimizations/scale
  • What are ways you can make things more efficient?
  • What are ways we can simplify?
  • What are performance optimizations? And how can we measure
  • How do we handle more scale?
  1. Testing/Monitoring (somewhat bonus points)
  • How do we ensure limited regressions?
  • How do we tell how good the system is?
  • How do we respond when things are bad?
  1. Product considerations (bonus points)
  • How do we make the UX amazing for this service?

About

A condensed system design guide

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published