System Design interview pattern

Hi Blind Community, I am preparing for interviews in the future and am stressing more on the System Design part. Generally, I get blanked up during interviews if I am not able to figure out anything, and it's affecting the rest of the interview. For those scenarios, I wrote a general structure(after reading Grokking the System Design(GTSD) interview until DropBox) on how to address these System Design interviews. I would appreciate it if anyone can go through it, answer my questions at the end and suggest any improvements for the below structure. System Design: 1) Say what is the system about if you know it or ask what is it about and why we use it 2) Requirements & Goals of the system: a. Functional Requirement: What should the user be able to do b. Non-Functional requirements: Based on the functional requirements, we say how the backend system should function like reliability, availability, scalability, etc 3) Capacity Estimates & Considerations a. How many total users for our system b. How many active users in a day c. How many objects on average will be uploaded/downloaded to/from our system d. Average object size that you will use. Ex for Instagram it will be small like in KB’s but for dropbox or google or youtube you need to consider the bigger sizes too e. Based on the average object size calculate the total data that will be moved by our system per day f. Based on the average object size calculate what is the total space we need to store all the uploaded data from all the users(active+inactive) g. Consider if our system is read-heavy or write-heavy. Based on it calculate what data will be uploaded or downloaded from our system 4) High-Level System design: a. Based on the above discussion draw a high-level design mostly like a client -> our app -> hits our service running on the cloud -> interacts with DB -> returns some response 5) System API's: a. Discuss how many API's you are going to design and what are they used for b. Discuss the input and output object structure c. If in the inputs there is anything that should be unique discuss how to generate them or leave it if you aren’t able to think about how to generate them 6) Database Design: a. What DB to use SQL vs NoSQL and why to use it b. Mention what is the structure of data stored in each DB like fields, primary keys, etc 7) Discuss other features like how to scale, reliability, single point of failures, load balancing, caching, data partitioning/sharding, data replication, data cleanup, etc 8) If you are saying about caching etc don’t forget to calculate the size of the cache 9) Based on points 5,6,7 update our high-level system design to include more components 10) Check if you missed any requirements from 2 and discuss for them Questions: 1) 2.a will the interviewer say us what requirements we are expected to design or do we say these are the futures I will be designing for 2) 3.a, 3.b, 3.c, 3.d should we ask the interviewer if he has any numbers in his mind or should I say these are the numbers I will be assuming for those fields 3) 8 will the 80:20 rule mentioned in GTSD work for all the scenarios or is this a value that I need to ask the interviewer about 4) When we mention about any features like caching, load balancing, etc do we need to mention about any software products that are used like Nginx for load balancing, amazon elasticache for caching, etc or will it be fine if we just mention we will be using a load balancer or cache there Thanks for your help #interviews #systemdesign #software #swe

Akamai Technologies __init__() Jul 27, 2020

Hi OP.. I appreciate your interest in system design, can you please shorten your questions. I feel it's lengthy post. Anyways DM me if you would like to talk about prep

Citibank EvolveCode OP Jul 27, 2020

Thank you init, will Dm you

Uber R2D2_CPPPO Jul 27, 2020

Good Summary

Microsoft edis1 Jul 27, 2020

I can help you out , let me know if you need a mock interview

Citibank EvolveCode OP Jul 27, 2020

Thank you edis1, will DM you in person

Google nicebutter Nov 5, 2020

I believe OP will do great in system design interview.