An introduction to IaaS (Infrastructure-as-a-Service), its components, advantages, pricing, and how it relates to PaaS, SaaS, BMaaS, containers, and serverless.
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:
IBM Cloud Virtual Servers
Bare Metal Servers
IBM Cloud Virtual Server for VPC
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.
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.
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:
Read more about region and zones on the IBM Cloud blog.
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:
Taken together, there are many reasons why someone would see cloud infrastructure as a potential fit:
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.
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.
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.
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.
Cloud storage services comprise scalable, durable, security-rich, cost-effective networks of connected data servers that enable access to data across devices.
Get maximum performance and secure single tenancy from a dedicated server with root-level access to all server resources for easier workload customization.
IBM Cloud Kubernetes Service enables the orchestration of intelligent scheduling, self-healing and horizontal scaling.
Learn about IBM Cloud Functions, a polyglot functions-as-a-service (FaaS) programming platform based on Apache OpenWhisk.
IBM Cloud Virtual Servers are public and dedicated virtual servers that provision and scale on demand, with monthly and hourly billing options.