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
and a 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.