Use Cases
1, shortening : take a URL => return a much shorter URL
2, redirection : take a short URL => redirect to the original URL
3, custom URL : http://goo.gl/Trump2016
4, High availability
5, Analytics :
6, Automatic link removal
7, Manual link removal : e.g. porngraphy
8, UI vs. API, see http://goo.gl
Constraints:
make some guess about the volume
1, new URLs per month : 100 million => because twitter daily tweets:
2, request per month : 1 billion =>
3, 10% for shortening and 90% for redirection
4, Requests per second : 400+ (40 : shortens, 360 : redirects)
5, 500 bytes per URL
6, 6 bytes per hash
Abstract Design:
1, Application service layer - services the requests
* shortening service
* redirection service
2, Data storage layer - keeps track of the hash<->URL mapping
* Acts like a big hash table
Bottlenecks:
1, traffic - how much, estimation, probably not the problem
2, data volume - quickly look up and insertion
3, how to split (scale)