There was a time when if you needed a computer, you had to go and get a physical piece of hardware, set it up, connect it to the network, and so on. These days, however, if you need a “computer”, what you’re really looking for is infrastructure — a collection of resources, such as compute, memory, storage, and so on — and you need to be able to get it in as flexible a manner as possible. Enter Infrastructure as a Service (IaaS).
At its core, a computer is a collection of resources:
As long as your program has access to these resources, it doesn’t care what form the machine actually takes.
In fact, the program doesn’t even care if it’s a physical machine at all. In fact, it could be a Virtual Machine:
In this case, you can see that a single physical machine, or host, can provide multiple Virtual Machines, or VMs. Each of these VMs is like a tiny (or not-so-tiny) computer within the host computer, and each is completely isolated from all the others, so as far as the user and any of their programs are concerned, it’s just the same as a physical machine (for the most part).
The purpose of Infrastructure as a Service
The idea of Infrastructure as a service is to make it possible for users to request the infrastructure they need when they need it and get it without having to involve an administrator or fill out a ticket and wait 6 weeks to get a response.
Instead, they can go to a (typically web-based) user interface and specify the needed resources, which are provided near-instantly.
These resources may consist of compute power (CPUs, or more properly, virtual CPUs (vCPUs)), RAM, storage, and even networking.
As a rule, the user neither knows nor cares where these resources are physically located — that is, which actual machine they live on. For the purposes of them using the resources, it doesn’t matter.
What is IaaS in cloud computing?
Because IaaS resources are non-location-specific, they are a perfect application for cloud computing, where hardware resources can be dispersed over an arbitrarily large area. For example, you might have a small data center on premises, or multiple data centers in multiple on-premise locations, or you might use public cloud resources.
In any case, the idea is that IaaS providers make IaaS services available over these hardware resources that are provided in a cloud-based architecture. In fact, when it comes to IaaS, cloud is a requirement.
Types of Infrastructure as a Service providers
So far, our discussion of Infrastructure as a Service has been completely generic. In fact, there are multiple ways to handle Infrastructure as a Service, depending on your needs and the level of open source versus proprietary software you’re comfortable with.
In the beginning, there was VMware. In many ways, VMware started the virtualization revolution, making it possible to run multiple virtual machines on a single host. VMware created a large portfolio of products and services, but these were primarily proprietary software products, which meant that not only were they not interoperable with any other IaaS, but every additional VM involved additional licensing costs, sometimes referred to as the “VMware Tax.”
Meanwhile, the Public Cloud industry started with Amazon Web Services providing Infrastructure as a Service, as Amazon discovered it could squeeze revenue out of its enormous hardware portfolio by making it possible for external users to create and essentially rent virtual machines. Amazon also created a large portfolio of different services, all of which were freely available — but firmly under the control of Amazon, on AWS servers.
Other public cloud providers also began offering IaaS, such as Google Cloud Services and Microsoft Azure.
All of these IaaS cloud providers also developed additional services to work with their Virtual Machines, and all of these services were largely proprietary (though some are based on open source projects) and their services are based on the idea that customer applications and data are hosted on and served from the provider’s hardware. Each also had its own independent (and non-interoperable) API.
While public cloud solutions did solve the problem of the VMware Tax, they introduced their own problems. Companies realized that their data was outside of their owned infrastructure — and the meter was running.
Enter OpenStack. The idea behind the open source OpenStack project is to make it possible for companies to essentially create their own “on premise” cloud. This way internal end users could request Infrastructure as a Service just as they would from AWS or Google Cloud, but data and applications would remain under the company’s control and supervision — and starting a new VM wouldn’t trigger a new hourly charge the way it did with public cloud.
Like the OpenStack also provides a number of related services, such as Networking as a Service, Storage as a Service, DNS as a Service, and so on.
OpenStack provides a robust platform for companies with significant IaaS needs and can be more cost effective than public cloud. For example, this cloud TCO calculator shows the differences between running a datacenter on AWS and on Mirantis Cloud Platform OpenStack.
Other on-premise solutions
All of this assumes that you are mostly interested in running full Virtual Machines and other IaaS services and resources. But the concept of Infrastructure as a Service is rooted in the ability of users to create and enable resources on their own.
For example, you may be working with containerized applications rather than VMs. In this case, you may need different kinds of Infrastructure as a Service. You may need VMs on which to run your containers, or a container orchestration platform such as Kubernetes.
You may also want to provide these resources in an “as a Service” way. For example, Mirantis Container Cloud enables you to provide users with a UI from which they can create and provision their own Swarm or Kubernetes-based Docker Enterprise clusters, either on-premise or on Amazon Web Services.
Ultimately the idea behind Infrastructure as a Service is to give you and your users control over when and where to make resources available.