List the key functional requirements for the system (Ask the AI for hints if stuck)...
validations
rate limit
verify the long url
generate the short code through long url
give short url
when user clicks on short url it redirect to the original long url
List the key non-functional requirements (performance, scalability, reliability, etc.)...
generate qr code for short url
Estimate the scale of the system. Consider daily active users, read/write ratio, storage requirements, bandwidth, and any relevant QPS calculations...
suppose the 100 million short link is generated in 1 day then
write ratio i.e user clicks/read is 10 Billion
read:write ratio = 100:1
query per second = link click/ 86,400
Define the APIs expected from the system. This is your chance to analyze and define the read and write paths so that you can come up with the high-level design...
GET http/v1/{longurl}
POST http/v1/{shorturl}
DELETE http/url
Describe the overall system architecture. Identify the main components needed to solve the problem end-to-end. Use the diagramming tool to create a block diagram.
user enters the long url
long url is converted into short url
when clicked on short url it then redirect to the original url
Define the data model. Identify the main entities, their attributes, and relationships. Consider the choice of database type (SQL vs NoSQL) and justify your decision based on access patterns...
Deep dive into 2-3 key components. Explain how they work, how they scale, discuss tradeoffs, capacity, and any relevant algorithms or data structures.
base62 encoding
random string generations
snoflake id