Cloud computing is the use of computing resources (hardware and software) which are available in a remote location and accessible over a network, such as the Internet. Users are able to buy these computing resources (including storage and computing power) as a utility on demand. Cloud computing entrusts remote services with a user's data, software and computation. Use of virtual computing resources can provide a number of advantages including cost advantages and/or ability to adapt rapidly to changing computing resource needs.
Managing network-based services, such as those described above, can be extremely complex. At least some of this complexity is attributable to the large number of instances of computing resources and other types of resources that typically exist in such a service at any given time. For example, some network-based services might utilize dozens of data centers around the world, hundreds of thousands or even millions of server computers, along with large numbers of networking components, software programs, and other types of resources. When a large number of resources are utilized by a network service in this way, it can be very difficult to balance hosts or other network components so that one data center does not become overloaded.
For example, when launching new instances in data centers, it can be difficult to decide in which data center to launch the instances. One technique can be to launch the instances in a data center that has the most available capacity. Unfortunately, the data centers having the most available capacity are often the largest data centers, which are buying capacity quickly because most requests for resources are being directed to them. The result is some data centers grow very rapidly until they reach capacity, while others grow very slowly. However, there is a limit to the extent with which a datacenter can grow because of physical constraints. For example, it is only possible to add additional rooms to accommodate additional racks and hosts until space runs out at the datacenter site. There are other possible constraints that can limit the growth of datacenters, such as the total capacity of the power supply, whether the datacenter can have multiple floors, etc.
Having a datacenter reach its full capacity and become permanently constrained is an issue for customers. For instance, if only two datacenters are available in a region, and one of the datacenters reaches full capacity, new customers can only launch instances in a single datacenter and the resulting website could be unavailable to its users for a day or more in case of a major event in that datacenter.