What is IaaS (Infrastructure-as-a-Service)?
Infrastructure-as-a-Service, commonly referred to as simply “IaaS,” is a form of cloud computing that delivers fundamental compute, network, and storage resources to consumers on-demand, over the internet, and on a pay-as-you-go basis. IaaS enables end users to scale and shrink resources on an as-needed basis, reducing the need for high, up-front capital expenditures or unnecessary “owned” infrastructure, especially in the case of “spiky” workloads. In contrast to PaaS and SaaS (even newer computing models like containers and serverless), IaaS provides the lowest-level control of resources in the cloud.
IaaS emerged as a popular computing model in the early 2010s, and since that time, it has become the standard abstraction model for many types of workloads. However, with the advent of new technologies, such as containers and serverless, and the related rise of the microservices application pattern, IaaS remains foundational but is in a more crowded field than ever.
In the following video, Bradley Knapp breaks down the basics of IaaS:
IaaS platform and architecture
IaaS is made up of a collection of physical and virtualized resources that provide consumers with the basic building blocks needed to run applications and workloads in the cloud.
- Physical data centers: IaaS providers will manage large data centers, typically around the world, that contain the physical machines required to power the various layers of abstraction on top of them and that are made available to end users over the web. In most IaaS models, end users do not interact directly with the physical infrastructure, but it is provided as a service to them.
- Compute: IaaS is typically understood as virtualized compute resources, so for the purposes of this article, we will define IaaS compute as a virtual machine. Providers manage the hypervisors and end users can then programmatically provision virtual “instances” with desired amounts of compute and memory (and sometimes storage). Most providers offer both CPUs and GPUs for different types of workloads. Cloud compute also typically comes paired with supporting services like auto scaling and load balancing that provide the scale and performance characteristics that make cloud desirable in the first place.
- Network: Networking in the cloud is a form of Software Defined Networking in which traditional networking hardware, such as routers and switches, are made available programmatically, typically through APIs. More advanced networking use cases involve the construction of multi-zone regions and virtual private clouds, both of which will be discussed in more detail later.
- Storage: The three primary types of cloud storage are block storage, file storage, and object storage. Block and file storage are common in traditional data centers but can often struggle with scale, performance and distributed characteristics of cloud. Thus, of the three, object storage has thus become the most common mode of storage in the cloud given that it is highly distributed (and thus resilient), it leverages commodity hardware, data can be accessed easily over HTTP, and scale is not only essentially limitless but performance scales linearly as the cluster grows.
BMaaS vs. IaaS
Bare-metal-as-a-Service (BMaaS) provides an even lower level of control than traditional IaaS. In a BMaaS environment, resources are still provisioned on-demand, made available over the internet, and billed on a pay-as-you-go basis (typically in monthly or hourly increments).
Unlike traditional IaaS, BMaaS does not provide end users with already virtualized compute, network, and storage; instead, it gives direct access to the underlying hardware. This level of access offers end users almost total control of their hardware specs. Given the hardware is neither virtualized nor supporting multiple virtual machines, it also offers end users the greatest amount of potential performance, something of significant value for use cases like HPC and GPU computing, high-performance databases, analytics workloads, and more.
For end users familiar with operating in traditional data centers, BMaaS environments will also feel the most familiar and may best map to the architecture patterns of existing workloads.
However, these advantages can also come at the expense of the benefits of traditional IaaS, namely the ability to really rapidly provision and horizontally scale resources by simply making copies of instances and load balancing across them.
When it comes to BMaaS vs. IaaS, one model is not superior to the other—it’s all about what model best supports the specific use case or workload.
Data centers, availability zones, and regions
To promote greater availability and resiliency of resources, most cloud providers today offer a hierarchy around how workloads map to physical and virtual infrastructure as well as geography.
As an example, IBM Cloud has availability zones and regions. These two terms are defined as follows:
- IBM Cloud Region: A region is a geographically and physically separate group of one or more availability zones with independent electrical and network infrastructures isolated from other regions. Regions are designed to remove shared single points of failure with other regions and guarantee low inter-zone latency within the region.
- IBM Cloud Availability Zone: An availability zone is a logically and physically isolated location within an IBM Cloud Region with independent power, cooling, and network infrastructures isolated from other zones, This strengthens fault tolerance by avoiding single points of failure between zones while also guaranteeing high bandwidth and low inter-zone latency within a region.
Read more about region and zones on the IBM Cloud blog.
Virtual Private Cloud and IaaS
For many end users, particularly companies with sensitive data or strict compliance requirements, additional security and privacy within a public cloud is a desirable. A virtual private cloud (VPC) can be a way of creating additional isolation of cloud infrastructure resources without sacrificing speed, scale, or functionality.
VPCs enable end users to create a private network for a single tenant in a public cloud. They give users control of subnet creation, IP address range selection, virtual firewalls, security groups, network ACLs, site-to-site virtual private networks (VPNs), and load balancing.
In the following video, Ryan Sumner explains VPCs in more detail:
IaaS is typically priced on a consumption basis, meaning users are only charged for what they use. Over time, the pricing models of cloud infrastructure have come to span many different levels of granularity:
- Subscriptions and reserved instances: Many providers offer discounts off the sticker price for clients willing to commit to longer contract terms, typically around one to three years.
- Monthly billing: Monthly billing models are most common in the BMaaS market, where physical infrastructure typically implies steady state workloads without spiky characteristics.
- By the hour/second: The most common granularity for traditional cloud infrastructure, end users are charged only for what they use.
- Transient/spot: Some providers will offer up unused capacity at a discount via transient/spot instances, but those instances can be reclaimed if the capacity is needed.
Taken together, there are many reasons why someone would see cloud infrastructure as a potential fit:
- Pay-as-you-Go: Unlike traditional IT, IaaS does not require any upfront, capital expenditures, and end users are only billed for what they use.
- Speed: With IaaS, users can provision small or vast amounts of resources in a matter of minutes, testing new ideas quickly or scaling proven ones even quicker.
- Availability: Through things like multizone regions, the availability and resiliency of cloud applications can exceed traditional approaches.
- Scale: With seemingly limitless capacity and the ability to scale resources either automatically or with some supervision, it’s simple to go from one instance of an application or workload to many.
- Latency and performance: Given the broad geographic footprint of most IaaS providers, it’s easy to put apps and services closers to your users, reducing latency and improving performance.
Typical use cases
IaaS represents general purpose compute resources and is thus capable of supporting use cases of all types. Today, IaaS is most commonly used for dev and test environments, customer-facing websites and web applications, data storage, analytics and data warehousing workloads, and backup and recovery, particularly for on-premises workloads. IaaS is also a good fit for deploying and running common business software and applications, such as SAP.
And while IaaS is capable of supporting a very diverse array of workloads, as we will explore in later sections, there are emerging compute models that might be better positioned to support certain types of workloads or application architectures, such as microservices.
IaaS vs. PaaS vs. SaaS
The easiest and most common way of understanding the distinction between the coarse grained -aaS categories of IaaS, PaaS, and SaaS is typically by understanding which elements of the stack are managed by the vendor and which are managed by the end user.
In a traditional IT setting, it is up to the end user to manage the whole stack end-to-end, from the physical hardware for servers and networking, up through virtualization, operating systems, middleware, and so on.
IaaS, PaaS, and SaaS each offer a progressive layer of abstraction after that. IaaS abstracts away the physical compute, network, storage, and the technology needed to virtualize those resources. PaaS goes a step further and abstracts away the management of the operating system, middleware, and runtime. Serverless computing (see below) abstracts away management of everything but the application code itself, and SaaS provides the entire end-user application as-a-Service, abstracting away the entire rest of the stack.
Learn more about the differences between IaaS, PaaS, and SaaS.
IaaS vs. containers vs. serverless
More recently, the discussion around cloud workloads has become increasingly dominated by containers and serverless. In many ways, IaaS was a step in the journey to the platonic ideal of cloud.
IaaS does offer end users much more granularity to pay for what they use, but they rarely pay only for what they use. Even virtual servers often involve long-running processes and less than perfect capacity utilization.
IaaS abstracts away many low-level components so developers can focus on business logic that differentiates the business, but it does still require end users to manage operating systems, middleware, and runtimes.
IaaS is often more resource and financially efficient than traditional compute, but spinning up a VM can still be somewhat time-consuming, and each VM brings with it overhead in the form of operating systems.
This model of IT was capable of supporting almost anything from a workload perspective but had room for evolution when it came to certain underlying philosophies and values that make cloud, cloud.
Containers and serverless are the two newer cloud models that are challenging the traditional IaaS model for supremacy around certain classes of cloud native applications and workloads.
In some cases, the container has begun replacing the VM as the standard unit of process or service deployment, with orchestration tools like Kubernetes governing the entire ecosystem of clusters.
Serverless goes the furthest of any model, abstracting away nearly everything but the business logic, scaling perfectly with demand, and really delivering on the promise of paying only for what you use.
As the world moves more toward microservices architectures—where applications are decomposed to their small piece parts, deployed independently, manage their own data, and communicate via API—containers and serverless approaches will only become more common.
Today, traditional IaaS is, by far, the most mature compute model in cloud and controls the vast majority of market share in this space, but containers and serverless will be technologies to watch and begin employing opportunistically where it makes sense.
IaaS and IBM Cloud
IBM offers a full-stack cloud platform that includes a full IaaS layer of virtualized compute, network, and storage. Additionally, and unique within the industry, IBM Cloud also offers BMaaS for users that want additional control over the underlying hardware.
IBM is also committed to delivering solutions for cloud-native applications and workloads which, in addition to IaaS, include IBM Cloud Kubernetes Service and IBM Cloud Functions for serverless applications.