1) The system should output a short URL that takes us to the long URL
2) Links will expire after a year, pointing to a response that says they are expired and will get deleted after another year
3) The system should scan for malicious content
10kb per row for url table * 50,000 writes=500 MB per day
500MB * 365= 182.5 GB per year for URL table
10kb per row for user table * 1000 *365= 3.65 GB for user table
URL Table:
User Table:
Write Operations:
Read Operations:
Scalability:
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?