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.
Fig. 1 Accessing Cloud Computing Resources
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. An example is a web-based e-mail application.
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.
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.
Fig.2 Service Models
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.
- Cloud Consumers. They utilize the cloud platform and create applications and services for the users.
- Cloud Users. They use the applications and services provided by the cloud consumers.
Fig. 3 Cloud Computing Ecosystem
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.
Fig. 4 Cloud Architecture
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).
Windows Azure Platform
Windows Azure platform is the Microsoft implementation of cloud computing. The core of this platform is the Windows Azure operating system. The following illustration maps the Windows Azure platform to the cloud computing layers.
Fig. 5 Windows Azure Platform Architecture
From now on we will use the name Windows Azure to indicate the entire platform unless we want to specifically refer to the operating system. Windows Azure provides resources and services for consumers. For example, hardware is abstracted and exposed as compute resources. Physical storage is abstracted as storage resources and exposed through very well defined interfaces. A common Windows Fabric abstracts the hardware and the software and exposes virtual compute and storage resources. Each instance of an application is automatically managed and monitored for availability and scalability. If an application goes down, the Fabric is notified and a new instance of the application is created. Because virtualization is a key element in cloud computing, no assumption must be made on the state of the underlying hardware hosting the application. As matter of a fact Windows Azure follows a computing model where the Fabric controller maps service declarative specifications to available resources.