Assume 100 requests per second * 200 kb (average photo size) * 0.1 (write ratio to read)=2mb per second
2mb * 3600 * 356 * 10 years= 63.072 TB for photos
Since the users table , and the follower, follow table are small in size we can ignore that.
Pictures:
Users:
Follow:
New_Feed:
To Store the photos we will use a service such as S3
Assumptions:
This is a heavy read application.
Scalability:
Fault Tolerance and Reliability
Writes:
News Feed (Reads)
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?