Requirements


Functional Requirements:


  • Create a short URL for a given long URL.
  • Return the long URL associated with a given short URL.



Non-Functional Requirements:


  • Low latency
  • Reliable
  • Scalable


API Design

  1. POST /shorten/?url={url}
    1. Request: url to be shortened
    2. Response: shortened url
  2. GET /fetch/original/?short_url={shortUrl}
    1. Request: shortened url
    2. Response: original url



High-Level Design

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.





Detailed Component Design

Deep dive into 2-3 key components. Explain how they work, how they scale, discuss tradeoffs, capacity, and any relevant algorithms or data structures.