User should be able to
Estimate the scale of the system you are going to design...
User Base:
Traffic:
We can calculate the traffic based on the number.
Queries Per Second:
Data size :
Tweeting
Home Feed
Following/Unfollowing
Favoriting/Unfavoriting
RDMS database with the following tables
Users table
Tweets table
User Favorites table - many to many
User Followers table - many to many
You should identify enough components that are needed to solve the actual problem from end to end.
Rate limiter
Load balancer
CDN
Services
Cache
Database
Scaling
Explain how the request flows from end to end in your high level design.
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...
Services
Cache
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?
How to address issues outlined in the previous section:
Additional features we could add in the next iteration of the system: