The standard features of cloud computing are
On-demand self-service: The ability for the customer or an application that the customer operates to provision resources at any time through a self-service portal or API.
Broad network access: The ability for the customer or an application that the customer operates to access the resources and services available in the cloud from a broad network. With public cloud solutions, this means the Internet, whereas with private cloud solutions, this is limited to the corporate or private network.
Resource pooling: The characteristic of the cloud resources to be pooled into logical groups and isolated from other tenants or customers of the cloud at the account and network level.
Rapid elasticity: The ability of the cloud resources to be expanded or contracted at a moment’s notice. The cloud provided needs to ensure enough capacity so that all customers can expand their application resource usage to any (reasonable) size at any moment. The cloud provider also needs to give customers the ability to shrink the resources in use by their application when not in use.
Measured service: The characteristic of the cloud service that measures resource consumption and infrastructure performance and provides the data collected to the cloud provider and the customer.
Finally, there are three service delivery models:
IaaS: Infrastructure as a Service delivers raw compute, storage, and network capacity to the cloud customer. The customer is required to understand, configure, maintain, and secure the environment that they have created. Although IaaS requires the customer to be well versed in many different technologies, using IaaS as the deployment model, however, provides the most flexibility.
PaaS: Platform as a Service delivers more refined and more specific services such as databases, application front and back ends, and message queues. These are deployed via a simple API call, which enables developers to easily deploy solutions with one simple call even from within code. PaaS is also deployed, configured, managed, and secured by the provider, thus releasing the customer from these tasks. PaaS usually delivers a good mix of features and flexibility and helps reduce management overhead; however, due to the nature of the delivery model, it is not suitable for all cases like IaaS.
SaaS: Software as a Service focuses on delivering services in an end-user consumable fashion. SaaS deliveries are working, fully functional applications that should be relatively easy for any user to consume from a client application or simply through the browser. The functionality is limited to the software in question, and these kinds of solutions are useful when little or no customization is required.
The different deployment models also influence the level of responsibility of the provider and customer. Because the ownership of the infrastructure, the platforms, and the application layer is divided between the provider and the customer, each of them must ensure their portion of the application is configured correctly, patched, and secured. This is commonly referred to as shared responsibility and should be considered a key factor in choosing the deployment model.
Figure 1.1 demonstrates the level of responsibility of the customer and the provider.
FIGURE 1.1 The shared responsibility model in IaaS, PaaS, and SaaS
All this talk about the cloud can make you feel as though the era of datacenters is over, but that is not the case. The datacenter market has grown quite significantly since the rise of cloud computing; however, most of the datacenter activity now surrounds the underlying platforms that run the cloud services.
By taking a look at Figure 1.2, you can easily see how the datacenters, the hardware, and the NIST definitions are all tied together to provide cloud services.
FIGURE 1.2 Visual model of cloud computing as defined by NIST