Requirements verification
Let’s quickly check whether all the functional and non-functional requirements are met with this design.
The following are the functional requirements:
- Given a long URL, return a short URL. This works based on our solution.
- Given the short URL, return the original URL. This requirement is also satisfied.
- Short URLs should be unique and the length of the URL should have some cap. The short URL is unique and is seven characters long.
The following are the non-functional requirements:
- Availability: The system should be highly available.
- Given that the system is horizontally scalable and there is no single point of failure, there is always a server available to take the read or write requests.
- Scalability: The system should be highly scalable (100 M users) and be able to tolerate request spikes.
- The system can be scaled by just adding more counter servers and read servers as they are behind a load balancer.
- Latency...