1 A walkthrough of system design concepts

 

This chapter covers

  • Learning the importance of the system design interview
  • Scaling a service
  • Using cloud hosting vs. bare metal

A system design interview is a discussion between the candidate and the interviewer about designing a software system that is typically provided over a network. The interviewer begins the interview with a short and vague request to the candidate to design a particular software system. Depending on the particular system, the user base may be non-technical or technical.

System design interviews are conducted for most software engineering, software architecture, and engineering manager job interviews. (In this book, we collectively refer to software engineers, architects, and managers as simply engineers.) Other components of the interview process include coding and behavioral/cultural interviews.

1.1 A discussion about tradeoffs

The following factors attest to the importance of system design interviews and preparing well for them as a candidate and an interviewer.

1.2 Should you read this book?

1.3 Overview of this book

1.4 Prelude: A brief discussion of scaling the various services of a system

1.4.1 The beginning: A small initial deployment of our app

1.4.2 Scaling with GeoDNS

1.4.3 Adding a caching service

1.4.4 Content distribution network

1.4.5 A brief discussion of horizontal scalability and cluster management, continuous integration, and continuous deployment

1.4.6 Functional partitioning and centralization of cross-cutting concerns

1.4.7 Batch and streaming extract, transform, and load (ETL)

1.4.8 Other common services

1.4.9 Cloud vs. bare metal

1.4.10 Serverless: Function as a Service (FaaS)

1.4.11 Conclusion: Scaling backend services

Summary

sitemap