Assumptions:
Estimations
Storage Estimations: Here are some simple storage calculations
User Data: Considering we have 1,00,000 users, we grow by 40% per year, each user record is 100KB. So, at the end of 5 years, we will have 1.1M users
Storage Required = 1.1M * 100KB = 1100000 * 100 KB = 110 GB
Media Storage: let’s assume, we have 500 unique events per month that have media video file and each file is 25MB file.
Storage Required = 500 * 12 months * 5 years * 25 MB = 750 GB
For the tables required in this design, refer to the class diagram, the list of classes is not exhaustive but this is a good number of tables to start with.
Data Partitioning Strategy:
Regional or Geographical Partitioning:
Partitioning Adjustments:
Sharding Strategy:
Scaling Strategy
You should identify enough components that are needed to solve the actual problem from end to end. Also remember to draw a block diagram using the diagramming tool to augment your design...
Explain how the request flows from end to end in your high level design. Also you could draw a sequence diagram using the diagramming tool to enhance your explanation...
Dig deeper into 2-3 components and explain in detail how they work. For example, how well does each component scale? Any relevant algorithm or data structure you like to use for a component? Also you could draw a diagram using the diagramming tool to enhance your design...
Explain any trade offs you have made and why you made certain tech choices...
Try to discuss as many failure scenarios/bottlenecks as possible.
What are some future improvements you would make? How would you mitigate the failure scenario(s) you described above?