As an SWE/SRE system design is the most important as part of design skills. Now where to start? is the biggest question. you might find plenty of things online like "Grokking the System Design Interview" or online classes or youtube videos. Tired of seeing those or reading those? Well, then where to start. In my point of view these are the important things:
Analyze the problem? Think about where the question came from? What problem actually solves? Why do you actually need design for it?
Above questions raises lot of other questions. right?
Now breakdown the problem to pieces
solve each piece and combine the solution.
Think about scalability. thats the most important thing. For example if you are designing twitter . What if all the people around the world start using twitter? Can your design sustain?
Think about frontend, backend, middle layer, api layer, database layer, networking layer, servers, security , certificates, load balancing, deployment model, datacenters, cloud, autoscaling, testing model , containerization, versioning, HADR, best practices, Memory, bandwidth, cost, capacity, caching, CDN , DNS etc etc. there might be lot more , please add in the comments if you think about more things.
Now you really do not have time to explain during the interview. atleast give an overview at the end but discuss mainly about what design are you planning to do and how load balancing works.
I would say, think from the small things. Like how do you design a pen/pencil. How do you design a book? how do you design a phone? how do you design a toy? sounds funny right. But then thats where the analysis starts.
Database is most important component in all the applications. Not always relational DB works and not always No sql DB works. can you combine both of them ? Yes why not, if it serves the purpose.
Again, in all the above things, you are not writing code. You are only thinking about the design and bringing the parts together. How do you do this?
Flow Diagram? Flow diagram is the most important thing. all the design you can put together in a diagram first and you can explain the things later.
Now should we start with a problem? Please suggest in the comments which is the design you want to discuss or lets break the things together and work on an acceptable design
Are you guys ready?
Top comments (2)
Can we try out flow diagram? What is SRE in this case? Systems requirement engineering or systems reliablity engineering? If it is the former, the dev.to #sre tag may not be appropriate.
SRE is Site Reliability Engineering. you can find more information here .
sre.xyz/