Space requirements:
Average Orignal URL length = 100 bytes i.e. 1 kb
Average alias length = 8 bytes
20 billion aliases require = 0.1 kb * 20B = 2 Tb
### Generate alias for a URL
POST /alias
Request:
Response:
### Access control for an alias
POST /alias/permissions
Request:
DELETE /alias
POST /alias/activate or /deactivate
GET /alias
ALIASES table:
PERMISSIONS table:
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?