I have written some blog posts about running science applications on the cloud, such as What Types Of Applications Are Best Run On The Cloud? and Why Don’t You Use The Cloud?
Someone pointed out that I had never really defined cloud computing. Well, there are many answers to this question, and this is perhaps what confuses people. Perhaps appropriately, the answer is a little nebulous … (sorry, that was bad). I have always thought of it from an end user’s perspective as simply buying compute resources as you need them from a third-party vendor. But there is more to it than that. For one thing, many people can now build their own clouds and not have to pay any usage charges. After a spot of Googling, possibly the best definition I found comes from the SearchCloudComputing web site. They define cloud computing as “… a general term for anything that involves delivering hosted services over the Internet.”
There are, I think, three characteristics of cloud computing:
- Services are made available on demand and, for a commercial cloud, users only pay for what they use
- The cloud is “elastic,” in that resources are made available as they are needed, and
- The service is managed by the provider; end users simply access it from their desktop machines via the internet. The provider may offer to its customers any or all of the following:
- Infrastructure – a complete system such as a system team manages locally for an organization
- Platforms – an environment you would use as you would a desktop, or
- On-line software service – such as access to a data processing tool, or a search engine.
What makes all of this possible? There have been many improvements in distributed computing in the past decade, but the key to cloud computing is virtualization. This is the same technology that you can use on your desktop to run, say, Windows from your Apple computer: it involves the complete simulation of a platform in a machine that is created and stored as a file on the host platform. The creation of virtual machines, for instance, is what allows resources to be allocated on demand.