The term 'Cloud Computing' takes its name from the fact that when representing the Internet on a computing diagram (such as a top level architectural diagram), it is represented as a cloud. The reason for this is to hide the technical details of the Internet from the diagram. As the Internet is really just a big network, containing servers, routers, virtual machines and so on, all of this detail is abstracted away behind a cloud for clarity and simplicity.
So the term 'Cloud' simply refers to the Internet.
So what is Cloud Computing?
There is no single, comprehensive definition of exactly what Cloud Computing is. In its most basic form, Cloud Computing is an architectural paradigm that relies on the Internet as its mode of delivery. It is a means of delivering services and applications through the Internet, independent of platform and hardware.
So rather than have applications installed locally, such as your word processor and spreadsheet, these applications would be delivered by the Internet. All your data files would be stored on the Internet too. All processing and computation would take place on a remote server.
All the local machine has to do is connect to the Internet.
This is not an entirely new concept. The idea of delivering applications and services via the Internet goes back to the early days of the Internet, circa the mid 1990s. However, there were too many technical problems for this to become a reality, such as the lack of available bandwidth. Whilst broadband may be common place now, a decade ago band width was nowhere near its current capacity.
In its simplest form, Cloud Computing has simply extended the concept of the thin client. The idea of the thin client is to free up the local machine by installing data and files on a remote server, typically on the same internal network. So a thin client is basically a client / server application, with all files and computation taking place on a remote server.
If you take this concept to its logical conclusion, the thin client becomes a dumb client, with the local machine holding no files or data whatsoever, and all applications and services are delivered by remote servers (the Cloud).
Application Virtualisation
Cloud Computing is dependant upon a technology called application virtualisation. This is a technology that allows applications and infrastructure to become independent of the underlying platform or operating system.
A fully virtualised application can run on any platform.
Virtualising an application means ensuring the application is completely self sufficient, and contains everything it needs to run. This self contained, virtualised application can then be deployed and run anywhere. If it can run anywhere, then it can be deployed to the Cloud.
Benefits
One major benefit of Cloud Computing is not having to worry about the servers, hardware and infrastructure that is required to deliver the application or service. This runs in the Cloud, and is therefore someone else's problem to worry about.
There is now no longer a requirement to have to devote time and effort to developing and maintaining applications we are not expert in. As Cloud Computing applications run in virtual application environments, which are completely self contained, this is now no longer an issue.
Drawbacks
The one size fits all approach typical of Cloud Computing applications, does not always work for large enterprises with complex requirements. They are general purpose applications for solving general purpose problems. For enterprises with specific problems, Cloud Computing may not be the answer.
For many enterprises and organisations, having data outside the firewall may pose a security threat. Remember, everything runs in the Cloud, and as we know all too well, communicating with the Cloud is not without its risks.
One of the major criticisms that has been aimed at Cloud Computing is the loss of control of data once it is in the Cloud. If the service provider is having technical problems, there may be delays in accessing your data. In the worst case scenario, you may not be able to access you data at all.
Many libertarians have stressed that Cloud Computing forces organisations and individuals to sacrifice their privacy and personal data to a third party. This is a particular issue for users of social networking sites such as Facebook and MySpace.
Summary
Cloud Computing as a paradigm, has been built on top of more traditional models such as thin client computing, and simply taken this to its logical conclusion. One of the key underlying technologies used by Cloud Computing is application virtualisation, whereby an application is encapsulated so it is self contained, and can therefore be deployed on any platform, including the Cloud. While it has several benefits, the loss of privacy and personal data to a third party is a fundamental criticism that needs to be addressed if Cloud Computing is ever going to seriously compete with more traditional models of deployment.