I've been surprised at the way fairly traditional companies have embraced the cloud — but don't always embrace the benefits. For most, the payoff has been relatively small and confined to the infrastructure layer.
The thing is, most of the benefits of IaaS (infrastructure as a service) have already been realized through virtualization, which during the last decade cut costs through the infrastructure equivalent of Conway's law. Every department wanted its own server or, worse, its own server farm. Virtualization provided those departments with the illusion of dedicated infrastructure, while at the same time enabling management to pool resources and centralize IT operations.
This resulted in some great cost savings. Granted, the software was expensive — I frequently heard people report that a VM cost 80 percent of its "metal" equivalent — but those figures usually didn't count the ancillary costs. It was a pretty good deal.
Nonetheless, we often saw companies that had adopted virtualization deploy small virtual server farms by hand with no automation. Basically, it was the modern version of the IT guy with a stack full of floppies loading Windows on a bunch of machines.
Why IaaS is no panacea
Although the benefits vary based on the services offered, IaaS tends to be a small step up from in-house virtualization. Management in particular has a tendency to get all excited about the idea of "outsourcing to the cloud." Soon it becomes clear that maintaining cloud infrastructure takes nearly as much work — plus, in many cases, special knowledge of a particular cloud service's peculiarities.
Most companies that have adopted Amazon's EC2 or other cloud offerings have merely ported their VM practices to the new system. If they were using automation before, then they're going with Puppet or whatever they previously worked with in the cloud. If they aren't, then it's bearskins and bone knives and step-by-step instructions.
For internal IT departments, this looks like efficiency, mainly because the procurement of software and hardware by itself is so political and time-consuming. In truth, there's really no reason for a human to touch repetitive system installation tasks — in other words, pretty much all of them. While automating an installation stack with Puppet is a step in the right direction, if that stack is, say, Tomcat, then you're just reinventing your own PaaS.
Kick it up a notch with PaaS or SaaS
PaaS is a fully provisioned application development and deployment environment riding on top of a scalable IaaS your internal IT doesn't need to maintain. One indication of the value of PaaS is that most SaaS providers build their apps on one — it's rare that the underlying structure isn't best off being PaaS at least on the application server layer.
Sign up for CIO Asia eNewsletters.