This is going to be high reads system. More short links will be clicked then created. There could be 100 users using the system in a day. Each user creating 50 short links in a day. Making it 5000 links created in a day. Each link could be clicked by 10k users in a day. so in total 5 billion clicks in a day.
Lets say each short link needs 10 bytes and long url needs 2000 bytes. So for 5000 links we need
short link storage = 10 * 5000 = 50kB per day.
Long URL storage = 2000 * 5000 = 10Mb per day.
Since this is high read system usage of big data such as mongodb, redshift, etc is preferred.
For storing user's info RDBMS such as mysql could be used.
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. If you are unfamiliar with the tool, you can simply describe your design to the chat bot and ask it to generate a starter diagram for you to modify...
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?