What is “system design”?
According to wikipedia, the basic study of system design is the understanding of component parts and their subsequent interaction with one another. Systems design has appeared in a variety of fields including computer/software architecture.
When did I first face challenges in system design?
I was working on a project that was running 24/7. I was taksed with finding a solution for backfilling a large amount of data that was not processed in the past since the system was down. I had to think about different aspects such as:
* How to ensure that the system can handle the large amount of data without crashing?
* How to ensure that the data is processed in a timely manner?
* What to do if the system fails during the backfilling process?
* Can it run in parallel with the daily processing? Is there any dependency?
* What was the reason of failure? Has there been any change in the format of incoming data?
Each system design problem is unique. However, I think there should be some ways to improve such skills. In programming, we know that each problem can be unique. But there are some practices like leetcode that can help us to improve our skills. I think the same applies to system design. So, I did a quick search and I am going to share what I’ve found online.
Resources to learn system design
First step?
I am not sure but as I was reading opinions on reddit, I realized that I should probably start with the book System Design Interview – An insider’s guide.