Real-World Design Case

← Back to System Design 101 | ← Previous: Security

Introduction

Let me walk you through designing a production-grade URL shortenerβ€”a system I built that handles millions of redirects daily. This case study applies all the concepts from previous articles: scalability, caching, databases, APIs, and more.

Requirements

Functional Requirements

  • Shorten long URLs to 6-8 character short codes

  • Redirect short URLs to original URLs

  • Custom short codes (optional)

  • Analytics (click tracking, referrer data)

  • Expiration dates for URLs

Non-Functional Requirements

  • Availability: 99.99% uptime

  • Latency: <100ms for redirects

  • Scale: 10M URLs stored, 100M redirects/day

  • Durability: Never lose URL mappings

System Architecture

Database Schema

Core Implementation

Short Code Generation

URL Shortening Service

Analytics Service

Performance Optimizations

1. Multi-Layer Caching

2. Database Optimizations

Deployment

Monitoring & Alerts

Results

Performance achieved:

  • Latency: p50: 8ms, p95: 45ms, p99: 120ms

  • Throughput: 15,000 redirects/second

  • Availability: 99.98% uptime

  • Cache hit rate: 96%

  • Cost: $800/month for 100M redirects

Key optimizations:

  1. CDN caching reduced origin requests by 99%

  2. Redis caching provided sub-10ms redirects

  3. Read replicas distributed database load

  4. Async analytics processing improved redirect speed

  5. Proper indexing kept DB queries <5ms

Lessons Learned

What worked:

  1. Simple, focused feature set

  2. Heavy caching at multiple layers

  3. Async analytics processing

  4. Database read replicas

  5. Comprehensive monitoring

What I'd do differently:

  1. Start with simpler analytics (avoided ClickHouse initially)

  2. Use managed Postgres (less operational overhead)

  3. Implement better rate limiting earlier

  4. Add custom domain support from start

  5. Build admin dashboard for URL management

Conclusion

This URL shortener demonstrates real-world application of system design principles:

  • Scalability: Horizontal scaling, caching, read replicas

  • Reliability: High availability, redundancy, monitoring

  • Performance: Multi-layer caching, database optimization

  • Security: Rate limiting, input validation, auth

  • Maintainability: Clean architecture, comprehensive logging

The system handles millions of redirects daily while maintaining sub-100ms latency and 99.99% availabilityβ€”all on a reasonable budget.


Navigation:

Congratulations! You've completed System Design 101. You now have the knowledge to design scalable, reliable, and maintainable distributed systems. Keep learning, keep building, and remember: good system design is about understanding trade-offs.

Last updated