What Is Cloud?
This is the story of how cloud provides us all with the opportunity to truly rethink how we do things, by rearranging things in a new way. The reality of cloud is that it is a culmination of many parts: changing business models, changing Internet functionally (increased speed of transmission, increased reliability), baseline standards, significantly lower costs of hardware and networking.
We consider cloud at the highest level to provide a means by which adequately secured, global, highly scalable, and flexible services can be delivered and consumed using Internet standards through an as-needed, pay-per-use business model.
Cloud services exist as the current incarnation of our evolving technology and business models. Implicit in the term cloud services are a number of evolved capabilities in terms of cloud computing, cloud operations, and cloud standards:
- Cloud computing is the infrastructure, including the data centers, networking, and communication standards.
- Cloud operations are the management tools, the APIs, and the many disciplines associated with managing the cloud environments.
- Cloud standards are rapidly evolving from the existing Internet and Web 2.0 standards that have led us to this stage. The goal of cloud standards efforts is to align cloud computing and cloud operations capabilities. In early incarnations, cloud standards have primarily been de facto in nature, but a significant number of organizations are working to evolve them (or to create de jure standards for the benefit of all).
The concepts of large-scale usage of compute resources such as utility and grid computing are derived from traditional utility providers such as power or water. The adoption of utility computing is seen as a good parallel for cloud services, because they have initially been used for noncritical processing.
Let's start off with our chosen principal definition to cloud and then move to focus on what's really core to cloud and how you can take advantage of it. While you will find many definitions available, we see the most useful, comprehensive, and popular definition as being from the National Institute of Standards (NIST). The NIST Definition of Cloud Computing Version 15 offers the following definition of cloud computing as defined by Peter Mell and Tim Grance:
- 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.
The next three sections present the essential characteristics, service models, and deployment models of cloud computing as defined by NIST.
The NIST Essential Characteristics of Cloud Computing
The essential characteristics of cloud computing as defined by NIST are shown in Figure 1.2.
Figure 1.2 Cloud essential characteristics based on the NIST definition
Key to these characteristics introduced here is the concept of multitenancy—the idea that many different applications, users, and even businesses may take advantage of the resources being used, as follows:
- On-demand self-service: A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with each service's provider.
- Broad network access: Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).
- Resource pooling: The provider's computing resources are pooled to serve multiple consumers using a multitenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or data center). Examples of resources include storage, processing, memory, network bandwidth, and virtual machines.
- Rapid elasticity: Capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time.
- Measured service: Cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service.
The NIST Service Models of Cloud Computing
The service models of cloud computing as defined by NIST are shown in Figure 1.3.
Figure 1.3 Cloud service models based on the NIST definition
Each of the service models offers different levels of capabilities and responsibilities to the provider and the consumer of the service. In addition, these service models may utilize a custom architecture, or the physical infrastructure, to exist. These services may rely on a service offering from a lower service model. In this way, cloud services in the higher levels, those being platform and software, may be entirely built atop other cloud services. The most compelling way to think about these models is that if everything has a set of APIs from the lowest to the highest levels, the service-orientated nature of cloud services becomes very clear, as follows:
- Software as a service (SaaS): The capability provided to the consumer is to use the provider's applications running on a cloud infrastructure. The applications are accessible from various client devices through a thin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
- Platform as a service (PaaS): The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure, including network, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations.
- Infrastructure as a service (IaaS): The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls).
To elaborate the potential use of lower services by higher level services, Figure 1.3 includes an example SaaS customer relationship management (CRM) application that resides entirely atop the various cloud services deployment options, using an application server and database in a PaaS scenario, which in turn rely on an IaaS option for compute, network, and storage capabilities.
Critically, in Figure 1.3, we also introduce the concept of XaaS. XaaS represents anything as a service. That said, we will try to avoid confusion or pollution of the "aaS" nomenclature by focusing on SaaS, PaaS, and IaaS as the core models for cloud services, often combined into its own acronym of SPI.
These models can also be deployed in isolation, utilizing their own compute, network, storage, and related infrastructure. In these cases, the infrastructure is architected to deliver the best performance for the service delivery requirements and not generic capabilities as defined by each service layer.
The NIST Deployment Models of Cloud Computing
The deployment models of cloud computing as defined by NIST are shown in Figure 1.4 and are described in the following list.
Figure 1.4 Cloud deployment models based on the NIST definition
- Private cloud: The cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on premises or off premises.
- Community cloud: The cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be managed by the organizations or a third party and may exist on premises or off premises.
- Public cloud: The cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services.
- Hybrid cloud: The cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load balancing between clouds).