Use Casesapp
1, shortening : take a URL => return a much shorter URLui
2, redirection : take a short URL => redirect to the original URLrem
3, custom URL : http://goo.gl/Trump2016requests
4, High availabilityhash
5, Analytics : it
6, Automatic link removalio
7, Manual link removal : e.g. porngraphytable
8, UI vs. API, see http://goo.glservice
Constraints:request
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)