distinctions aren't particularly important in the context of cloud computing, but because it's easy to apply the “virtual” moniker to anything and everything, we need to draw some boundaries around when the designation is appropriate.
Machine Virtualization
Machine virtualization—also called server virtualization—involves abstracting the resources of a single physical server into multiple virtual machines (VMs). Essentially, a VM is a software-emulated computer consisting of virtual CPUs (vCPUs), memory, storage, and networking. Like a real computer, a VM runs an operating system (OS) called a guest OS. The software that creates virtual machines and performs this abstraction is called a hypervisor. The hypervisor also defines the properties of a VM, including the following:
The number of virtual CPUs
The amount of random access memory (RAM)
The type and amount of storage
Virtual network interfaces and how they're connected
We'll discuss hypervisors in more detail in Chapter 2, “Cloud Deployments.” Virtualization not only allows for more efficient use of hardware resources, but also reduces power consumption, cooling, and the server footprint in data centers. This is illustrated in Figure 1.5, where many VMs share common hardware platforms.
A physical server that runs VMs is called a virtualized host.
FIGURE 1.5 Virtualized computing
The proliferation of Internet-capable devices, such as smartphones and tablets, means an increased strain on IT infrastructure. Organizations that want to offer services to these customers can benefit greatly from the cloud's utility-like service model (see Figure 1.6). The cloud supports instant access in an always-on environment.
FIGURE 1.6 Cloud computing
Network Virtualization
By definition, computer networks are already virtual because they're just an abstraction of physical connections. But in the context of cloud computing, network virtualization refers to virtual private clouds (VPCs)—isolated private networks within the cloud that allow connectivity among virtual machines and other cloud resources. There's some overlap with machine virtualization here, because VMs have virtual network interfaces that connect to these virtual private clouds.
Cloud Service Models
If a cloud provider controls all the hardware aspects of your IT infrastructure, what do you get to control? The answer depends on the type of cloud service model you choose. Cloud service models fall into three categories, all of which are characterized by the term as a service:
Software as a Service (SaaS)
Infrastructure as a Service (IaaS)
Platform as a Service (PaaS)
Many cloud service providers use more descriptive terms in their marketing, including Communications as a Service (CaaS), Anything as a Service (XaaS), Desktop as a Service (DaaS), and Business Process as a Service (BPaaS), to name a few. However, all of these clever names fit into the SaaS, IaaS, or PaaS categories.
Software as a Service
Software as a Service (SaaS) most closely aligns with what used to be called a managed software service. For example, in the early days of the cloud, hosting companies would offer a hosted version of a certain popular, brand-name enterprise email system. Instead of having to buy, configure, and maintain this email system on your own servers, the hosting company would do it for you on its own servers. All you had to do was configure your client machines to connect to the appropriate server to send and receive email. NIST formalizes this concept in the following description of Software as a Service:
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 e-mail), or a program interface. 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.
The Software as a Service model is where the customer of the service accesses the application software that is owned and controlled by the cloud company, which has complete responsibility for the management and support of the application, as shown in Figure 1.7. You, on the other hand, have limited control over the operation and configuration of the software itself. Sticking to the earlier example, you can create and delete email inboxes and control how inbound and outbound emails are processed. But you can't upgrade the software to a newer version.
FIGURE 1.7 SaaS
Business applications are good examples of SaaS and can include customer relationship management, enterprise resource planning, human resources, payroll, and software development applications. Hosted applications such as email or calendars that are accessible from a browser or email client are examples of SaaS.
Infrastructure as a Service
The Infrastructure as a Service (IaaS) model lets you create VMs and virtual networks in the cloud according to your desired specifications regarding processing power, memory, storage, and networking. The IaaS model is probably the easiest to understand because it most closely mirrors the virtualized server environments in modern data centers. NIST describes it as follows:
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).
IaaS is really just a server and network virtualization environment offered as a service. Because of this, it offers the customer the most flexibility of any of the e-service models. You can provision to your specifications any number of VMs, on which you can run the software of your choice. Also, some IaaS offerings even allow you to choose the virtualized host on which your VMs run, giving you the ability to spread VMs across multiple hosts for resiliency.
IaaS (shown in Figure 1.8) allows the company's data center equipment to be replaced by the cloud equivalent but retains the ability to build