The U.S. National Institute of Standards and Technology published a formal definition of cloud computing in which it defined five essential characteristics: 1)
On-demand self service – The ability for cloud users to add capabilities (such as virtual machine instances or storage, and so on).
Rapid elasticity – The ability to add or remove resources on demand.
Measured service – The cloud service provider collects, controls, reports on, and optimizes resources (bandwidth, CPU usage, and so on). Users’ consumption of these resources is usually the basis for service charges.
Resource pooling – Resources are shared by multiple consumers transparently. Users do not know where the resources are located or what other tenants may be using them.
Ubiquitous network access – Capabilities are accessed via heterogeneous networks.
Cloud computing can be delivered as a “public cloud” where anyone can register and use the resources. Examples include Amazon Web Services (AWS) and Windows Azure. An alternative to public clouds is the “private cloud,” which involves deploying a cloud onsite for internal use by a single company. This can be done by building a solution based on OpenStack or by using a proprietary product such as one from VMware, Microsoft, or Cisco. The last option, and my personal favorite, is the “hybrid clouds” which is using both a public and private cloud as a single solution. Hybrid clouds have the advantage of providing a good balance between flexibility and performance. On the other hand, hybrid clouds mean more complexity and security challenges.
Cloud capabilities are delivered over the network “as a service.” There are three main types of service delivery:
Infrastructure as a Service (IaaS) – This type of service is usually provided by companies such as Amazon (AWS). The cloud capabilities are basic building blocks like virtual machines, storage, network bandwidth, and so on.
Platform as a Service (PaaS) – In this type of cloud computing service, the provider delivers infrastructure software components such as databases, queues, and monitoring. Windows Azure is an example of this type of service.
Software as a Service (SaaS) – These services are usually provided by smaller companies that deliver complete business capabilities. An example is Salesforce.com, which delivers a CRM solution as a service.