What is cloud computing?

What does "cloud computing" mean? There seems to be as many definition as there are people talking about it. Some people even say it doesn't exist.

Personally, I think the "cloud" is a surge in business for SaaS and PaaS that was initiated by the advance in hardware virtualization of 2005-2006. This enabled the development of low-cost (or no-cost) virtualization solutions.

EDIT

All this was technically doable before we called it "Cloud Computing". So is the switch from SW virtualization to HW virtualization and the public acceptance of having remote data just a market evolution?

EDIT 2

I’m trying to boost my arguments for non-technology people whose choices are driven by trends. First, the new ‘thing’ might look cool but unless you already had a problem to which this is the solution, it’s not necessarily an upgrade. Second, in the case of the Cloud; it’s not completely new. By that I’m saying that if you really had a problem that could be fixed by a Cloud-type solution, you could have fixed it way before the Cloud Wave.

BTW I’m not against the Cloud; I just don’t like the usage of any technology just for hype-sake. There’s definitely cool things that are being done and will be done on the Cloud. Thanks for all the answers!


Solution 1:

Here is the NIST definition.

The Summary:

Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model promotes availability and is composed of five essential characteristics, three service models, and four deployment models.

Solution 2:

A definition (although many can be brought up):

You're running an application on some servers. Somewhere. You can't exactly pinpoint where exactly these servers are. You have no idea what they could be doing otherwise. Or how many of them you are using simultaneously. You buy the computing power, but the exact hardware behind it is no longer specifiable. Then your application (or service) is running in the cloud.

Solution 3:

Cloud is just a new marketing name of the clusters, usually running a virtual servers. The idea is to merge the power of the all servers the Could vendor has and spread all the processes (typically virtual machines) across the whole hardware.

But it's hard and almost impossible on x86 without tuning the software side. So, practically the "cloud" is the set of servers, where virtual machines can be moved from one physical to another without a service interruption. But you're still limited to the power of the physical server and can't spread one virtual between two or more physicals without a modification of your software and creating an external load balancers to spread a load.

Buy a couple of servers, install XenServer or VMWare VSphere and WOW! - you have an own CLOUD! :)