At Google, we operate many data centers around the world, each of which contains a large number of computers linked to one another in clusters. In turn, the data centers are linked through a high-speed private network. These data centers support applications and services that users can access over the public Internet to tap into virtually unlimited computing power on demand, a process known as cloud computing (see “Security in the Ether”). Amazon, IBM, Microsoft, and others are implementing and experimenting with similar systems. Currently, these clouds operate in isolation, communicating only with users. But I think we need to start developing interfaces so that clouds can communicate directly among themselves.
An integrated cloud would have a number of advantages. Users may wish to move data from one cloud to another without having to download all their data and then upload it again. Or users may want to store the same data in multiple clouds for backup. In this case, reliable mechanisms for synchronizing data across different clouds would be useful. Some may wish to do coördinated computation in multiple clouds.
How can a program running in one cloud reference data in another? If one cloud puts restrictions on access to data, how can those controls be replicated in a second cloud? What protocols, data structures, and formats will allow clouds to interact at users’ direction and in accordance with their requirements?
Researchers are investigating these and other questions, with limited success so far. One approach that intrigues me reaches back into the pre-Internet days of the ARPAnet. The different operating systems of the day used many different kinds of remote terminals and text encoding schemes. ARPAnet researchers concluded that the most effective way to support remote access between interlinked time-shared computers was to define a “network virtual terminal” (NVT). The NVT did not physically exist anywhere, but all operating systems were equipped to translate between the NVT format and their native modes of terminal operation. One might imagine a similar idea for cloud computing: define a network virtual cloud with a set of functional characteristics intended to be generally realizable by all cloud providers. Interactions among clouds would appear to be happening through an intermediate virtual cloud. In this model, each cloud could translate its internal method of organizing data to and from standardized naming conventions, data exchange protocols, and perhaps data description protocols. It is too early to tell whether such proposals will gain traction, but these and other ideas will need to be explored if we are to make the most of cloud computing.
Vinton Cerf is vice president and chief Internet evangelist at Google. In the 1970s and ’80s he worked at DARPA, where he is widely credited with developing the Internet.