/SystemDesigns-TinyUrlAPI

Let's design a URL shortening service like TinyURL. This service will provide short aliases redirecting to long URLs.

Primary LanguageJavaMIT LicenseMIT

Build Status

SystemDesigns-TinyUrlAPI

Let's design a URL shortening service like TinyURL. This service will provide short aliases redirecting to long URLs.

Our URL shortening system should meet the following requirements:

Functional Requirements:

Given a URL, our service should generate a shorter and unique alias of it. This is called a short link. When users access a short link, our service should redirect them to the original link. Users should optionally be able to pick a custom short link for their URL. Links will expire after a standard default timespan. Users should be able to specify the expiration time.

Non-Functional Requirements:

The system should be highly available. This is required because, if our service is down, all the URL redirections will start failing. URL redirection should happen in real-time with minimal latency. Shortened links should not be guessable (not predictable).

#Extended Requirements:

Our service should also be accessible through REST APIs by other services.