What is Cloud Computing?
The official definition goes like this:
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.
For more information, see NIST Cloud Computing.
Next we’ll describe some of the cloud properties.
On demand-self-service is one of the cloud characteristics. It enables a consumer to provision computing resources as needed automatically, without intervention on the part of the cloud solution provider. From now on we will use the term cloud to mean cloud computing.
Also a broad network access allows for computing resources to be available through standard mechanisms such as HTTP and SOAP protocols. This is to enable access by a variety of clients such as laptops, mobile phones and other devices.
Another important characteristic is resource pooling. The cloud resources are pooled to serve multiple consumers using a multi-tenant model where resources are assigned based on consumer demand.
Cloud Service Models
The software as a service (SaaS) enables the consumer to use the provider applications that run in the cloud. The applications are accessible from various client devices through a thin interface such as a web browser. Some examples are web-based e-mail application, Google docs, Microsoft Office 365.
The consumer has the ability to deploy her own applications in the cloud as supported by the platform as a service (PaaS) model. These applications are created using programming languages and tools supported by the provider. Some examples are Google App Engine, AWS Elastic Beanstalk.
Finally, the infrastructure as a service (IaaS) enables the consumer to provision processing, storage, networks and other computing resources to deploy and run applications. The consumer cannot control the underlying physical infrastructure, though. Some examples are Amazon EC2, Amazon S3, Google Cloud Storage, Google Compute Engine, Google Big Query.
In the private cloud model the cloud is dedicated solely to an organization. It could be managed by the organization or a third party and may be located on premise or outside.
A community cloud model enables several organizations to share a cloud that supports a specific community with shared needs such as security requirements, policy and compliance considerations.
In the public cloud model the cloud is made available to the general public or a to a large industry group.
The following community categories are involved in the cloud computing ecosystem:
- Cloud Providers. They provide the hosting platform and cloud infrastructure services. In particular, they provide world wide data centers connected via public or private networks (the Internet). Data centers and network constitute the cloud underpinning.
- Cloud Consumers. They utilize the cloud platform and create applications and services for the users. For example, Google docs is an application where Google acts as a cloud consumer (and as a provider at the same time). The cloud developers are in the consumers category. They use the providers APIs to build applications and services for the users.
- Cloud Users. They use the applications and services provided by the cloud consumers. This will be you when using Google docs, for example.
The cloud architecture is structured in layers. Each layer abstracts the one below it and exposes interfaces that layers above can build upon. The layers are loosely coupled and provide horizontal scalability (they can expand) if needed.
As shown in the previous illustration, the cloud architecture contains several subsystems that are described next.
- Hosting Platform. This platform provides the physical, virtual and software components. These components include servers, operating system, network, storage devices and power control and virtualization software. All these resources are abstracted as virtual resources to the layer above.
- Cloud Infrastructure Services. The important function of this layer is to abstract the hosting platform as a set of virtual resources and to manage them based on scalability and availability. The layer provides three types of abstract resources: compute, storage and network. It also exposes a set of APIs to access and manage these resources. This enables a user to gain access to the physical resources without knowing the details of the underlying hardware and software and to control these systems through configuration. Services provided by this layer are known as Infrastructure as a Service (IaaS).
- Cloud Platform Services. This layer provides a set of services to help integrating on-premise software with services hosted in the cloud. For example in Windows Azure, Microsoft .NET Service Bus helps with discovery and access. Services provided by this layer are known as Platform as a Service (PaaS).
- Cloud Applications. This layer contains applications built for cloud computing. They expose web interfaces and services and enable multitenant hosting. Services provided by this layer are known as Software as a Service (SaaS).
- Five myths of cloud computing (itproportal.com)
- Choosing the Right Cloud Computing Model (securitymanagement.com)
- PaaS Enviroments Pave Path to Hybrid Cloud Computing (programmableweb.com)