Social networking systems enable a very large number of users (e.g., a billion users or more) to share data worldwide. To support this data sharing, the social networking systems have multiple data centers that are distributed around the world. The multiple data centers enable the data to be distributed worldwide, e.g., to back up data or to store data near where the data will be consumed. Each of these data centers typically has a very large number of server computing devices. The server computing devices may be assigned various roles, e.g., compute, data storage, web site, etc.
Various specialized roles of server computing devices may be centrally located. As an example, server computing devices that transcode content from one content type to another (e.g., video in one format to video in a different format) may be centrally located.
Data centers may be built based on various requirements and constraints. Data centers in developed countries can be large, where power and land are available. In countries where power and land are less available or there is a regulation concern, data centers may be smaller. Because larger data centers are easier to manage and provide superior scalability, they are preferred and tend to be built in a handful of locations. On the other hand, for flexibility and nimbleness, small data centers are preferred and they are built in many places wherever there are users of the social networking system. As a result, the infrastructure for a social networking systems may have various sizes of data centers that are geographically dispersed.
In typical data center environments, data is stored wherever there is capacity. However, social networks have specific characteristics of usage. As an example, content generated by some users (e.g., celebrity users) may be more widely consumed than content generated by other users (e.g., common users). When a server computing device is selected for storing the generated content merely based on where there is capacity, consumers of data who are not located proximate to where the data is stored may experience various network delays before they can view or otherwise consume the stored data. These delays can occur, e.g., because of network bandwidth and latency issues between data centers or between the data center storing the data and the user who is requesting to consume (e.g., view or otherwise cause to be rendered) the stored data. Even if network bandwidth can be improved between data centers or users, such improvements can be expensive. Thus, determining where to locate data storage and computation resources can be useful.