Improving upon vanilla virtualization with cloud computing

In our article on Developing a Software Energy Usage Profile (shameless self promotion - I know), my colleagues Rajesh Chheda, Steve Stefanovich, Joe Toscano and I discussed the value of assessing the energy cost of your business applications. Reducing the storage, processing, and network bandwidth required by your software applications has a direct result on its energy consumption. One of the remedies we prescribed for energy hungry applications was virtualization. I'd like to build on this idea by including cloud computing as an option.

What are the differences between Virtualization and cloud computing?
In the past, businesses paid for and maintained their own servers. In exchange for complete control of their server farm, businesses are responsible for purchasing the hardware, installing the operating systems, configuring the network, paying for the cooling costs, and replacing damaged equipment.

Virtualization helps by reducing the costs of maintaining your own infrastructure, but it does not eliminate them. A hosted solution removes some of the work associated with the server maintenance and also offers an economy of scale. A hosted solution doesn’t necessarily have the computing power to scale out however (not as easily as a real cloud solution).

In general, there is a considerable amount of virtualization involved in cloud computing, but it differs primarily in the fact that this virtualization occurs someplace else. You don't know how many machines are involved, what else they're doing etc. Microsoft's Azure platform and Amazon's offerings (Elastic computing, Simple DB, Amazon Web Services) are examples of cloud computing. These services remove the need for you to focus on the hardware specifics of your deployment, allowing you to concentrate on your business requirements.

Cloud computing would be an incremental advance on basic virtualization if that was all that it provided, but there many other advantages.


While virtualization allows you to scale your application out as necessary, you are still limited by your available number of servers and your network capacity. Organizations faced with unpredictable application usage must maintain a large, fallow server farm to support the peak demand. Cloud computing pushes this requirement off to the cloud where there is greater capacity. Moving your application to the cloud eliminates the need to maintain extra application servers for those “what if” scenarios.
Services provided by Amazon and Microsoft also are distributed across the globe, increasing fault-tolerance and reducing latency to users.

Conclusion
Virtualization and Cloud computing both provide a flexible alternative to traditional application deployment, doing so in a way that encourages developers to focus on their software Energy Usage Profile. Cloud computing provides additional benefits beyond simple virtualization, reducing the infrastructure cost to a product of CPU, Storage, and Bandwidth. These are the same factors developers need to consider when writing greener applications.
Prior to cloud computing, businesses, both established and starting up, were forced to devote considerable capital to server farms. If unused, this hardware does nothing but convert costly electricity into heat which must be removed via cooling requiring additional energy. Even if fully utilized, this hardware is expensive to maintain and replace in regular cycles. The advent of cloud computing allows more effective and efficient use of processing power, energy, and your budget.

0 comments: