Disclaimer: This article was written few years ago and may no longer be relevant as software engineering has changed a lot in the last few years. This is what may be more relevant now: Future of Software Engineering - Gaurav ChandakSystem Design/Architecture interview also known as High-Level Design Round (HLD) is a very critical round for senior software developer roles (2+ years of experience; SDE II and above).
There are a lot of resources present on the internet for system design interview preparation. We're listing down some of the best resources in this article to help you with your preparation.
This is the first article in a series of articles on System Design prep resources.
Distributed Systems Introduction
The system design interview mostly deals with discussing how you would build a software application for scale.
For building at scale, you need to deal with distributed systems. Let's look at the top resources that should help you get started with distributed systems.
Harvard Scalability Lecture by David Malan
The best lecture there is for learning about scalability and system design.
The lecture covers almost all the topics required for system design. After going through this video, it would be a good idea to Google about the different topics for getting more in-depth knowledge.
Distributed Systems in One Lesson by Tim Berglund
Using a series of examples all set in a coffee shop, Tim explores different distributed system concepts.
This talk is a very good follow-up to David Malan's lecture and will help solidify your basic understanding of distributed systems.
CAP Theorem
CAP theorem (Consistency, Availability, Partition Tolerance) is one of the most basic and one of the most important concepts of distributed systems.
Most of the design decisions taken while building a system requires making trade-offs between consistency and availability which is at the core of the CAP theorem.
A plain english introduction to CAP Theorem by Kaushik Sathupadi
This is possibly the easiest way to get an idea about CAP theorem. Kaushik tries to explain CAP theorem using a real life example.
This article is one of the first articles that people generally read to understand CAP theorem.
Link to the articleCAP Theorem: Revisited by Robert Greiner
Robert starts explaining the CAP theorem by going through the three components of CAP (Consistency, Availability, Partition Tolerance).
After that he explains the only two options that we have (CP & AP) as network failures are bound to happen and we can't choose CA to build our system.
Link to the articleHorizontal vs Vertical Scaling
How do you scale your system to handle more load/traffic?
If you know nothing about distributed systems, the obvious solution to this would be to replace existing machines with better machines (high CPU/RAM/Disk), i.e., through vertical scaling.
But if you've worked on distributed systems or have seen David Malan's lecture, you would know about horizontal scaling, i.e., using multiple machines to handle the load.
Horizontal vs. Vertical Scaling by Gaurav Sen
Gaurav starts by giving a brief about both the methods of scaling followed by specific differences between the two.
This is a pretty good follow-up video on Horizontal vs Vertical Scaling that you can watch after David Malan's lecture.
This is the first article in a series of articles on System Design prep resources. We'll be sharing more articles on this topic soon.
Meanwhile, please show us some love and share this article on social media through the share buttons



