This post is part 2 in a series, following my post on virtualization. This post should make sense by itself, but you may want to read the virtualization post first if you are unfamiliar with that topic.
Cloud computing is getting a lot of press these days, as some of the big name technology companies announce cloud computing platforms and services. So what is cloud computing, and how does it work?
What is Cloud Computing?
Cloud computing refers to moving computing services off of personal computers and out onto the Internet. You use your computer's connection to the Internet to interact with these services. Pictures that are used to describe this model often depict small personal computers connected to a puffy cloud with a bunch of services floating around inside of it. The idea here is that you don't really know or care where the service physically resides; you connect to "the cloud" and ask it to do something for you.
EC2, an Example of a Service in the Cloud
One of the more well known cloud computing services being offered today is the Amazon Elastic Compute Cloud, or EC2. The services provided by the EC2 cloud are "virtual computer systems". Customers of EC2 can purchase time on these virtual systems. An example will make this more clear. Suppose a company has developed a web-based application, and need a system running a web server so they can deploy their app. They don't know how popular their application will be, so they don't know how much computer power they need. At this point, they can purchase time on a virtual computer in the EC2, and load up their web server and web application. They can start out by purchasing time on a small virtual machine, and if their appliation becomes popular and they need more power, they can switch to a larger virtual machine (for which Amazon will likely charge them more money). The advantage is that they don't have to buy their own hardware, and they only need to buy as much as they need, when they need it; they don't get stuck with a system that is too small and needs upgrading, or a system that is too large and a waste of money.
EC2 itself is implemented using virtualization technology. When someone buys time on a computer in EC2, Amazon doesn't purchase a new computer for them to use. Amazon has a large, virtualzed computer center from which they can allocate a new virtual machine. On the internet, this virtual machine looks like a real system, with its own IP address, hostname, hosted web applications, etc.
Cloud computing and virtualization are two separate technologies, and virtualization is not a requirement of building a cloud computing system. However, just as it benefits a web application developer to deploy their app on a virtual system, it can be beneficial to deliver cloud computing services on virtual systems, so that resources can be flexibly redirected to services that need them.
Delivering Services from the Cloud
EC2 delivers virtual computer systems as a service. In the future, we can expect to see more examples of actual software services delivered via the cloud. An example might be something like a rendering service for making 3D movies. You could work on your personal computer to develop models and scenes for a 3D movie, and then submit it to a cloud-based rendering service to take care of the CPU-intensive process of rendering the final frames of the movie. In this way, computing becomes more like a utility; companies participating in the cloud will provide services, and consumers will purchase these services when they need them, and only purchase as much as they need.

