Cloud Computing is the latest in a long history of overhyped computing technologies. I won’t try to define cloud computing, since wikipedia does a good job, but the most prominent example of cloud computing is Amazon’s EC2 Service.
Instead of finding space in a data center, and dealing with all the IT related headaches that come with servers, storage, networking, and hardware, business can simply purchase instances in the cloud. Instead of paying upfront for a ton hardware, companies only pay for what they use.
Its a great model, especially for software startups. Instead of spending a bunch of money upfront on IT infrastructure, startups can spend money on their core-competencies. Need regional servers? EC2 provides multiple datacenter locations around the world. No need to deal with networking, hosting providers, hardware, and all those other IT annoyances.
So whats the problem? Well first off, you are entirely dependent on Amazon for the availability of your IT infrastructure. Amazon had 6 hours of downtime the other day. Secondly, if you actually care about performance, cloud computing will never be the best option, since its really just a slick interface on top of virtualization.
Virtualization is another overhyped technology, that allows you to split up one piece of hardware in to multiple instances all running on the same machine. So what’s the problem? You’re adding additional layers on top of the hardware, so performance is a problem. Multi-core CPU’s certainly help, but the biggest virtualization bottleneck is storage.
So you have 5 VM’s running on one server using local disk storage? Every VM instance is utilizing the same storage controller. Local disk storage is huge no-no when it comes to virtualization. The way to get around the storage problem is to use SAN for storage, but a lot of organizations are SAN-allergic.
My biggest issue with cloud computing and virtualization is reliability. With cloud computing, a software bug is no longer isolated to a single server, it can literally bring your entire infrastructure down. A hardware failure on a VM server will bring down every guest. A failure of 1 box, is really like 10 boxes going down at the same time.
In the financial industry, current cloud computing offerings would never be used due to performance, security, and risk concerns. At financial firms, virtualization is limited to dev/test configurations since financial applications are extremely latency dependent. What works for a Web 2.0 startup, doesn’t necessarily translate to other industries.
Cloud computing is definitely a interesting technology, and virtualization is here to stay, but its not a magic bullet. There are huge downsides to these technologies.