System Design Questions
Design a URL Shortener
Requirements:
- Shorten long URLs
- Redirect to original URL
- Track click statistics
Components:
- API Gateway
- URL Service (generate short codes)
- Redis (cache mappings)
- SQL Database (persistence)
- Analytics Service
Design a Rate Limiter
Approaches:
- Fixed Window
- Sliding Window
- Token Bucket
- Leaky Bucket
Implementation:
- In-memory for single server
- Redis for distributed systems
- Consider user ID, IP, API key
Design a Notification System
Components:
- Message Queue (RabbitMQ/Kafka)
- Background workers
- Multiple channels (email, SMS, push)
- Retry logic
- Dead letter queue