pastebin.com/abc123) the user can share.DAU - 5000000
Pastes per day - 1000000
Read to write ratio - 10:1
RPS(write) = 1000000 / 86400 = 12
RPS(read) = 120
Avg paste size = 10 KB
Storage per day = 1000000 * 10 = 10 GB/day
Storage over 5 year = 10 * 365 * 5 = 18 TB
Bandwidth = 120 * 10 KB = 1200
POST /pastes
{
"content": "...",
"expiration": "24h"
}
-> 201 Created
{
"key": "abc123",
"url": " https://pastebin.com/abc123",
"expire_at": "..."
}
GET /pastes/abc123
-> 200 Ok
{
"content": "...",
"created_at": "...",
}
-> 404 Not Found
{
"error": "Paste expired or does not exist"
}
CDN - the client sends a request to the CDN to find cacheable content
Load Balancer - if the required content is not cached, the request is sent to a load balancer to distribute the load.
API Gateway - accepts incoming requests from clients and redirects them to the required microservices
Expiration Service - microservice that checks a link's expiration date: if the expiration date has expired, the service returns a message that the content is no longer available. It also registers new links to user-created content.
PostgreSQL - a database for storing metadata about content, including expiration dates
S3 - stores the text content directly
PostgreSQL
S3
Deep dive into 2-3 key components. Explain how they work, how they scale, discuss tradeoffs, capacity, and any relevant algorithms or data structures.