2 A typical system design interview flow

 

This chapter covers

  • Clarifying system requirements and optimizing possible tradeoffs
  • Drafting your system’s API specification
  • Designing the data models of your system
  • Discussing concerns like logging, monitoring, and alerting or search
  • Reflecting on your interview experience and evaluating the company

In this chapter, we will discuss a few principles of system design interviews that must be followed during your 1 hour system design interview. When you complete this book, refer to this list again. Keep these principles in mind during your interviews:

2.1 Clarify requirements and discuss tradeoffs

2.2 Draft the API specification

2.2.1 Common API endpoints

2.3 Connections and processing between users and data

2.4 Design the data model

2.4.1 Example of the disadvantages of multiple services sharing databases

2.4.2 A possible technique to prevent concurrent user update conflicts

2.5 Logging, monitoring, and alerting

2.5.1 The importance of monitoring

2.5.2 Observability

2.5.3 Responding to alerts

2.5.4 Application-level logging tools

2.5.5 Streaming and batch audit of data quality

2.5.6 Anomaly detection to detect data anomalies

2.5.7 Silent errors and auditing

2.5.8 Further reading on observability

2.6 Search bar

2.6.1 Introduction

2.6.2 Search bar implementation with Elasticsearch

2.6.3 Elasticsearch index and ingestion

2.6.4 Using Elasticsearch in place of SQL

2.6.5 Implementing search in our services

2.6.6 Further reading on search