Requirements for URL Shortner Service System Design
1. Functional requirements
Given a long URL, the service should generate a shorter and unique alias for it.
When the user hits a short link, the service should redirect to the original link.
Links will expire after a standard default time span.
2. Non-Functional requirements
The system should be highly available. This is really important to consider because if the service goes down, all the URL redirection will start failing.
URL redirection should happen in real-time with minimal latency.
Shortened links should not be predictable. (TODO. Currently we are generating a simple short code which can be predicted. Later we can add a generated hashed code instead so that it cannot be predicted.)