System Design Challenge

Design scalable systems and architect robust solutions

🏗️

Design a URL Shortening Service

System Design Challenge

Design a URL shortening service like TinyURL. This service will provide short aliases redirecting to long URLs.

Functional Requirements

1

Given a URL, our service should generate a shorter and unique alias of it

2

When users access a short link, our service should redirect them to the original link

3

Users should optionally be able to pick a custom short link for their URL

4

Links will expire after a standard default timespan

Non-Functional Requirements

1

The system should be highly available

2

URL redirection should happen in real-time with minimal latency

3

Shortened links should not be guessable