Estimate the scale of the system. Consider daily active users, read/write ratio, storage requirements, bandwidth, and any relevant QPS calculations...
Urls are saved in a table with an id. By using obsucation we generate a urlId from this id. When requesting the /url/{urlId} we de-obfuscate the id and fetch the original url from the table. We return an html file with the original url in the http-equiv attribute.
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.