DefinitionUsing Computing resources which are typically owned and operated by a third-party provider who maintains facility housing computer systems and associated components, such as telecommunications and storage systems. Even though the third-party provider's resources are distributed (sometimes located in different locations) the consumer will see resource being offered by one entity. Consumers of cloud computing services purchase computing capacity on-demand and are not concerned with the underlying technologies used to achieve the increase in server capability.
Reasons for Cloud Computing to be popular- Connectivity cost between computer resources continue to fall.
- Computing hardware becomes more efficient at operating at scale.
- The economic incentives to share hardware among multiple users are increasing.
- The drawbacks in performance and interactive response that used to discourage remote and distributed computing solutions are being greatly reduced
Because of above reasons usage of cloud computing encompass not only web application but storage management, providing raw computing power and other specialized services.
Examples- Software as a Service (SaaS) offer by Salesforce is a cloud computing service offered to manage customer relationships in an organization.
- Google Apps which offer collaborative usage of Google Calender, Google Doc etc
Relationship to Grid ComputingCloud computing is technically realized through grid computing. Grid computing is term used for 2 categories of distributed computing
- Online computation or storage offered as a service supported by a pool of distributed computing resources.
- The creation of a "virtual supercomputer" composed of a network of loosely-coupled computers, acting in concert to perform very large tasks.
Advantages of Cloud Computing- Location of infrastructure in areas with lower costs of real estate and electricity.
- Improving overall utilization of resources by sharing capacity among a large pool of users.
- Separation of infrastructure maintenance duties from domain-specific application development. Thereby allowing uses of cloud computing to concentrate on application development.
- Separation of application code from physical resources. Thereby providing an common API to access the physical resources.
- Ability to use external assets to handle peak loads.
- Not having to purchase assets for one-time or infrequent intensive computing tasks. Thereby introducing a concept of subscription to service instead of buying a software.
- Ability to scale to meet changing user demands quickly, usually within minutes
ArchitectureThe architecture behind cloud computing is a massive network of "cloud servers" interconnected as if in a grid running in parallel, sometimes using the technique of virtualization (making multiple physical resources appear as a single virtual resource) to maximize the utilization of the computing power available per server.
The image below gives the architecture behind cloud computing.

Explanation of the constituents of the cloud computing architecture is given below.
- User interaction interface: This is how users of the cloud interface with the cloud to request services.
- Services catalog: This is the list of services that a user can request.
- System management: This is the piece which manages the computer resources available.
- Provisioning tool: This tool carves out the systems from the cloud to deliver on the requested service. It may also deploy the required images.
- Monitoring and metering: This optional piece tracks the usage of the cloud so the resources used can be attributed to a certain user.
- Servers: The servers are managed by the system management tool. They can be either virtual or real.
Following are the 4 principles laid down by Albert Wenger of Union Square Ventures defining a perfect cloud.
i.e when deploying cloud infrastructure you shouldn't have to worry about individual
machines. i.e using Amazon means dealing with machine instances, therefore according to
him it is not cloud computing.
The cloud should be really easy to deploy. The set up should basically take care of itself
and there should be no reason for you to waste valuable time worrying about configuring your cloud set up.
The cloud must painlessly scale and your code should keep working like it did the day you
first wrote it no matter how much you grow. i.e code needs to scale without unreasonable expectations placed on the developer.
Cloud computing should make it really easy to bring web services together.
Reference