Helping people with computers... one answer at a time.
Cloud computing is the latest buzzword for something that we've been doing for a long time: using applications that live on the web instead of our PCs.
So what on earth is cloud computing? Is it beneficial? We all know virtual machines can be useful, but cloud computing?
If you search for "cloud computing" you're likely to find a number of definitions, mostly from vendors trying to sell you services somehow related to what they think it is.
Rather than parrot those definitions verbatim, I'll give a shorter definition, and my spin on it.
I'll start by saying that while the term might seem new, what it represents is nothing new at all.
Here's a fine definition, courtesy of Wikipedia:
Cloud computing is an example of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet. Users need not have knowledge of, expertise in, or control over the technology infrastructure in the "cloud" that supports them.
Let's pick it apart a little.
The word "cloud" comes from the fact that when diagramming internet-based networks, engineers often use a cloud to represent the massive inter-connected complexity that is the internet:
Now, if there's been a change in thinking from that diagram at all, it's realizing that the services you use are just as abstract as the cloud itself. By that I mean you don't know if Hotmail, as shown in the above example, is one server or a dozen, if it's serviced by equipment in one location or many. It's just as "cloudy" as the internet that you use to connect to it. So in that sense the diagram for a "cloud computing" based metaphor would look more like this:
As I said, we have no idea how many servers Microsoft uses to implement Hotmail, and we don't care, as long as the service works.
In fact, the number of servers that actually comprise Hotmail is likely to change from day to day as the service grows - that's the "dynamically scalable" part of the cloud computing definition. The service can grow in capacity simply by throwing more hardware at it (or conversely, can scale down by removing hardware).
I'll sidestep a discussion of "virtualization" mentioned in the definition since, like the amount of hardware, it's an implementation detail that as a user of cloud computing services you would never actually see. For this discussion, just consider it a technique that helps make the "dynamically scalable" part work.
As you can see, Hotmail (and GMail, and Yahoo Mail, and many other web-based services) have been around for years. It's only in recent years that the term "cloud computing" has come in to vogue as more and more types of applications move to this same model.
There are a few additional characteristics of cloud computing that might help clarify it a little more:
The service is "in the cloud" - by that I mean that it's a service on the web that you sign up for and access via your browser; it's not (typically) an application that's installed on your machine.
Your data storage is "in the cloud" - you access your data via the service, and it's all kept on the services servers, not yours. You can, of course, download or copy your data as you see fit, but the primary scenario for the service is to store your data for you. A good example is simply accessing your email via Hotmail's or GMail's web interface.
You can access the service, and your data, from any connection to "the cloud" - by that I mean that for example you can access your Hotmail or GMail anywhere you can connect to the web and use a browser.
Another way to perhaps make this a little clearer is to list some examples of services that are inherently cloud-based:
Any web-based email service like Hotmail, GMail, Yahoo mail and so on.
Google Docs - web-based word processing, spreadsheet, presentation tools and more.
Quicken Online - web-based personal financial management.
Wikipedia - a web-based information resource.
Salesforce.com - a web-based "CRM" or customer relationship management tool used by many small and large companies.
JungleDisk - a PC based application that uses Amazon's or Rackspace's storage services to provide online backup "to the cloud".
In all these cases they're simply services that you can sign up for and that (hopefully) transparently scale to meet the demands their customers place on them.
Finally, a word about what it takes to build cloud-based applications.
It's both simple, and hard.
It's simple if you don't plan to scale transparently. In a sense, Ask Leo! is cloud based, since it's just a service on the web that you use. You have no idea, nor should you care, how it's actually implemented or structured. In reality, it's a single server serving up web pages and hopefully keeping up with demand. To scale it, or make it capable of handling significantly more traffic, would not be transparent, and would potentially require some downtime to re-arrange how it's implemented, or perhaps simply to move to more powerful hardware.
It's complex if you want to avoid all that. Consider the other extreme: Google itself - thousands of servers coming and going online and offline more or less constantly. There's an incredible level of complexity to make that all transparent that had to be designed in from the start.
In between there are many services out there designed to at least help those considering creating truly scalable cloud based applications. Both Amazon and Rackspace (where Ask Leo! is hosted), have sets of services ranging from simple data storage to virtual servers and more, all that can serve as building blocks for companies attempting to take their services into the cloud.