But ... what is cloud computing?
There is a certain awe associated with the term cloud. It could be because clouds are so nebulous themselves. But more so because it is used more as a euphemism for resources outside the traditional data centers. They denote almost mythical data centers of companies like Google, Microsoft, Facebook, etc.
However, there are very concrete ways to describe what is cloud computing. But instead of getting to a definition right away, lets look at a few analogies and different types of offerings from cloud providers.
There are different ways cloud computing can be consumed and therefore also different ways of looking at it. At the most simple level think of three main layers of a computation resource (e.g. a computer). There is bare metal consisting of hardware (CPU, memory, networking, etc) then the operating system, which sits on top of the hardware and finally the software applications that run on the operating systems.
There are similar analogies in cloud computing. The lowest level is virtualized hardware with operating system on it. This is the basic building block and is generally referred to as "Infrastructure as a Service" or IaaS. Examples of IaaS providers are Amazon EC2, Joyent, etc. The primary audience for this infrastructure is the corporate IT who can provision applications and servers in the cloud.
The next layer is the platform. A layer which supports applications that run on the cloud. Think of an application server as a platform. Similarly there are Cloud based platforms like force.com or Google app engine. These platforms are targeted towards developers who write applications for the platform. This type of offering is referred to as "Platform as a Service" or PaaS
Finally there are applications that are consumed by the end user. The applications are ready to consume software units and are targeted towards business users. These types of offerings are called "Software as a Service" or SaaS.
These three layers of the cloud are also called the service models of the cloud. i.e. how the cloud can provide different types of services.
With this context let's get back to the definition of the cloud or cloud computing.
There are several ways to define cloud computing and I will provide a few different definitions:
1. Cloud computing is data center with an API (IaaS)
2. Cloud computing is a computing paradigm where the internet is the platform or the operating system.
3. Cloud is an on-demand, self service and elastic computing model. Elastic, because resources can be added or removed as per requirement. Moreover cloud also provides pay per usage costing or utility model for consuming resources.
In order to understand cloud computing, we should also look at the usage models of cloud. These are also called deployment models for the cloud. The cloud can be deployed as
1. Public cloud: These are cloud infrastructure or software services available on internet, accessible to everyone - usually through just a browser.
2. Private cloud: These are cloud offerings which are deployed privately inside corporate network for access to internal employees usually. Even public cloud offerings can provide private networks (e.g. VPC from Amazon AWS)
3. Hybrid cloud: These are cloud deployments which are both private and public. There is usually a broker layer in the middle to make the experience seamless for the consumers.
With some of these definitions and different views on the cloud, hopefully some of the clouds are moved and the cloud sun is shining brighter.