System Design Interview Checklist

How to say what the interviewer is waiting for me to say without making her wait

Dafna Ehrman
3 min readJul 24, 2022
Photo by Francesco Ungaro: https://www.pexels.com/photo/blue-green-orange-and-red-rainbow-design-decoration-673648/

In two weeks I will have my first system design interview. I feel nervous, excited, and motivated to go through it successfully. As a junior developer I was part of developing big systems. As a senior to be, being able to look at the big picture of the design is a huge adventure for me. Getting to know the basics and the terminology was nothing but total fun.

Clarifying requirements

The first step of my interview will be discussing the system I will be designing, its main features and the expected load it should be able of dealing with.

Functional requirements

What will the system do? For example, WhatsApp: one on one chat, group chat and sending & reading verification. Another example: Netflix, streaming service and recommendations per user.

Business requirements

Here I will ask about the business model, which will help me understand what the user will pay for, or whether he’ll be paying at all. Maybe it’s going to be free and therefore the collected data will be the actual asset of the company?

Non-functional requirements

The terms in this category are about making the system meet the requirements all together. Scaling while keeping low latency, availability, consistency and reliability. Remembering the CAP theory, I will choose some features above the others, so it is important for me to understand which of them is crucial for the system expected behavior.

The Designing Process

In most cases I will start with a client, server and a database. Starting with the simpler approach but still keeping in mind (and also discussing with the interviewer) that later it will need to be scaled. e.g starting with a single in-memory host, then splitting it to many hosts.

Stating the main design issues I will deal with during the interview

  • A lot of requests (and therefore, probably a lot of servers)
  • A lot of users
  • A lot of data
  • Server failure

I wrote ‘a lot of’ but later on I would like to talk about the exact numbers or at least assumpations, as accurate as possible. Next I will get to the most important part of the interview for my opinion, discussing tradeoffs to consider during the design process.

Tools I would like to use

  1. Components like: Load Balancer, ZooKeeper, Database, Cache, CDN, Message Queue

2. Measurements: five nines availability, QPS, bandwidth estimation, storage size

Possible tradeoffs to discuss

SQL VS NoSQL

Latency VS Throughput

Availability VS Reliability

Caching VS Storing

Scaling VS Simplicity

Developing duration VS Complexity

Functionalitiy VS Efficiency

Specificity VS Generality

Summary

To summarize my preparation for the interview I will attach a note to have in front of me during the interview:

  1. Clarify requirements, both functional and non-functional
  2. Discuss tradeoffs
  3. Suggest a basic design
  4. Improve the design with necessary components
  5. Check if there are single points of failure

Appendix 1- Names of technologies

Load Balancer: Azure Application Gateway, Kemp LoadMaster, Citrix ADC, F5 BIG-IP Local Traffic Manager (LTM), Varnish Software, Nginx, Azure Traffic Manager, HAProxy

Relational Database: IBM DB2, Oracle DB, SingleStore, SAP HANA Cloud, Microsoft SQL server, PostgreSQL, MySQL

Non-Relational Database: MongoDB, Apache Cassandra, Apache HBase, Apache CouchDB, Neo4j, RavenDB, Redis, OrientDB, ScyllaDB, DynamoDB

(Types of NoSQL DBs: Key-Value like Redis, Wide column Cassandra, Document like Mongo, Graph like Neo4j)

Cache: Redis, Memcached, Apache Ignite, Couchebase server, Hazelcast IMDG, Mcrouter, Varnish Cache, Squid Caching Proxy

CDN: SatckPath, Sucuri, Cloudflare, KeyCDN, Rackspace, Google Cloud CDN, CacheFly, Amazon CloudFront

Service Discovery Software: ZooKeeper, HashiCorp Consul, Eureka, Docker, Traefik, etcd, GRPC, Hysterix, SkyDNS

Messaging: Apache Kafka, AWS Kinesis

Message Queue: AWS SQS, RabbitMQ

Appendix 2- Useful links

GitHub system design detailed guide

InterviewBit system design guide

FreeCodeCamp guide

Toward Data Science system design guide

System Design CheatSheet

System Design Examples

--

--

Dafna Ehrman
Dafna Ehrman

Written by Dafna Ehrman

Senior Backend Engineer @ Moovit

Responses (1)