# System Design

{% embed url="<https://github.com/donnemartin/system-design-primer/blob/master/README.md#system-design-topics-start-here>" %}

##

### Interview Process

* Scope the problem
  * Don’t make assumptions.
  * what features / how much scale do we need
  * Ask clarifying questions to understand the constraints and use cases.
  * Steps
    * Requirements clarifications
    * System interface definition

* Sketch up an abstract design
  * Building blocks of the system
  * Relationships between them
  * Steps
    * Back-of-the-envelope estimation
    * Defining data model
    * High-level design

* Identify and address the bottlenecks
  * Use the fundamental principles of scalable system design
  * Steps
    * Detailed design
    * Identifying and resolving bottlenecks

* features

* define APIs

* availability&#x20;

* latency performance

* scalability

* durability

* class diagram

* security and privacy

* cost efficiency

![](https://2878046910-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIBLMn_afS_V7H-sgLo%2F-MMwYZfV3onlXZDatysW%2F-MMwZbwHSGcGL6xnX0fD%2Fimage.png?alt=media\&token=c245dc44-3546-4e1d-9b47-dab2f51c158f)

![](https://2878046910-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIBLMn_afS_V7H-sgLo%2F-MMwYZfV3onlXZDatysW%2F-MMwZgMBIx2_o5iMJ49P%2Fimage.png?alt=media\&token=578269a0-d9a6-4be3-b479-433ddd732d2d)

![](https://2878046910-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIBLMn_afS_V7H-sgLo%2F-MMwbyfB6XQjtH3lrvx6%2F-MMwebGjWmo3N-hHtQDf%2Fimage.png?alt=media\&token=deead343-87d6-40bd-a8b6-c18b7aa6f95b)

![](https://2878046910-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MIBLMn_afS_V7H-sgLo%2F-MMwbyfB6XQjtH3lrvx6%2F-MMwfDI4T1BoXsCE-NdW%2Fimage.png?alt=media\&token=d7371ca3-3c65-42de-8f60-4130b156c549)

API key
