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:


  • List the key non-functional requirements (eg low latency, scalability, reliability, etc.)...

low latency, high availability, maintainability, performance, security, horizontal scalability


API Design


POST /urls


penapi: 3.0.0


info:

title: URL Shortener API

version: 1.0.0


paths:


/urls:

post:

summary: Create short URL


requestBody:

required: true

content:

application/json:

schema:

type: object

properties:

originalUrl:

type: string


responses:

'201':

description: URL created successfully


/{shortCode}:

get:

summary: Redirect to original URL


parameters:

- name: shortCode

in: path

required: true

schema:

type: string


responses:

'302':

description: Redirect


High-Level Design

The high-level design consist of


loadbalancer: for incomming trafic

api gateway: for distributing to the correct service

redirect service

shortening service

cache

data layer: database

for uniqueness will use the id of the database




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.