System Design Interview Cheatsheet
gist.github.com
gist.github.com
For example, you want to be able to link revenue (user counts, advertising impressions, etc) to infrastructure costs. This could have ripple effects throughout architecture such as deciding between AWS S3 storage vs buying hard drives by the pallet and installing them in your own data center. This could later affect web clients such that your javascript code restricting users from uploading photos larger than 1024x768 pixels because your IT staff can't install/format raw harddrives fast enough for huge 10MP images.
In other words, technical choices affect costs, but simultaneously, knowledge of costs also drives the technical choices.
Technical architects can focus on factors like latency, redundancy, MTBF, bandwidth, watts, etc but they also have to have a parallel mindset of the "business spreadsheet". Your CEO/CFO is going to ask about it anyway because $$$ is a constraint on what's feasible to build. E.g. you can present System Design Option #1 that costs $5 million based on X assumptions or Option #2 that costs $10 million based on Y assumptions.
However, there is little mention of the criteria that can affect system design, taking into account the shape of the problem under consideration and functional requirements.
Driving system design will be:-
- domain complexity
- whether domain in business, commerce and industry, versus computer and data sciences
- whether the representation of the problem is best suited to a simple procedural approach, a structure programming using functional decomposition approach, an object domain model, or a data-driven approach.
Lastly, privacy and data protection aren't mentioned at all, which is absolutely mandatory for me.
Sure there are more things to add (like identifying key interfaces) as others have mentioned here. This is a nice starting point though.