If you read the brochures, Clouds promise—apparently—limitless capacity, pay-as-you-go economics, and freedom from the drudgery of maintaining and upgrading the boxen that litter your data center.
At the same time—if you believe the hype—they’re compatible with on-premise infrastructure, and it’s easy to run applications in clouds for testing and even production. IT managers can control the operating system, server configuration, architecture, and everything else.
Cloud computing can absolutely deliver elastic, fire-and-forget capacity on demand, without any need to tweak the underlying machines. This is called Platform as a Service: developers paste their code into the cloud, and it just runs. On the other hand, a cloud can be heavily customized, giving customers control over nearly every aspect of their environment, from network topology, to machine configuration, to what runs when and where. This is called Infrastructure as a Service: you get a command line, a library of virtual infrastructure, and all the machines you can afford. You just can’t get both at once.
This isn’t just disingenuous. It sets impossibly high expectations. It can undermine the real value clouds offer, because it makes IT professionals (and the less-than-technical managers to whom they report) think that they can have their cake and eat it, too. Cloud computing is about tradeoffs. The basic model of public clouds is based on an economy of scale. The cloud provider spreads costs across a large number of customers, who share common platforms. The more that a customer needs to customize things, the smaller the scale against which to economize. Consider the geographic location of data. Many companies are concerned about where their data goes—in fact, one IT executive I talked with recently confidently stated, “with clouds, you don’t even know what country your data is in.” That’s simply not true. If you choose a cloud that doesn’t make any guarantees about data, then the provider is able to choose the best place for information based on cost, law, latency, reliability, and so on.
On the other hand, Amazon lets users choose from four Availability Zones, two of which are inside the U.S. But if a cloud customer wants to be more specific—choosing the city or even the data center—then the cloud provider can’t find an economy of scale. Costs will rise, the range of available services will shrink, and the customer may as well rent their own rack.
Clouds are also about automation and standardization. Cloud providers want to design single points of failure and manual tasks out of their offerings. The more a customer is willing to co-operate and abdicate opinions, the more automated and reliable a service they can use. By coding to App Engine and Bigtable, Google’s customers get immediate elasticity and detailed accounting of what’s happening. In return, all they have to do is give up their opinions about storage architecture and programming language.
Cloud Computing is a valuable new tool in the IT toolbox. But not clearly explaining the tradeoffs and nuances, its proponents are making promises the cloud simply can’t deliver.