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:


  • Availability
  • Low Latency


API Design


API expects a string url denoting full url and returns a string custom shortened url.


High-Level Design

We just need 3 layers

  • A light weight service, where the business logic resides.
  • A database, postgres. Since request response is defined.
  • A redis cache layer for storing the url mapping.




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.