The most glamorous part of cloud computing falls under Software as a Service, or SaaS. Providers make applications available which individuals and businesses can use, covering everything from resource management to backup.
But what if you want full control of your remote services, with the ability to create and run your own rather than pick from a smorgasbord? That's when you want Infrastructure as a Service (IaaS).
SEE ALSO: PaaS vs. IaaS: What's The Difference?
A virtual machine in the cloud
IaaS is almost like having your own computer in the cloud. Almost — but not quite, and the differences are important. It gives you a virtual machine, with processing power, memory, and permanent storage. It's not on any fixed piece of hardware. It may not even be in a fixed geographic location. It could be anywhere on the provider's servers. You can get IaaS in a variety of flavors, but usually you have less than total control over the VM.
Sometimes you'll see leasing the use of physical machines called IaaS. That's not really cloud computing, at least if you accept virtualization as a defining characteristic. Anyone can call any computing service "the cloud," but here we're talking about virtual systems.
In some cases the VM is nothing more than hardware emulation. You can install any operating system you want. This is as close to a remote computer as you can get short of leasing hardware, but it's still sitting on top of another operating system. Usually it's sharing hardware with virtual machines belonging to other users. You can increase or decrease the resources available to your VM whenever you like. If you want to set up a fully customized server with complete control of the operating system, this is the way to go.
In many cases IaaS services provide not just the virtual machine, but the operating system and supporting software. Amazon EC2, for example, lets you choose from several popular operating systems and provides a dashboard for managing your VMs. This saves a lot of work in setting up the operating system if you don't have highly specialized needs. Once you've specified your environment, you can clone multiple VMs to divide up the workload.
IaaS very often includes support such as software updates and backup. Be sure you know what the package includes, though. If all you get is a VM to build on, you're responsible for backing up files, updating system software, and managing security.
IaaS vs. PaaS
Some IaaS services go well beyond the bare operating system in the software they offer. They may provide databases, Web servers, application servers, messaging services, and more. At some point, this shades into PaaS (Platform as a Service).
So what's PaaS? It's a cloud service which includes not just an operating environment but an application and development environment. It provides facilities for creating, testing, and running applications. This means at least an application server, and often a full development system and debugger as well.
PaaS services often run inside a container environment, largely isolating the service from the underlying VM. On an IaaS service, you can run your own container environment for any purpose you like.
If you're given a container with tools that gives you full control of everything inside its boundaries, does that count as IaaS? That's an unsettled question, but it's one of terminology, not technology. Generally it's considered a form of PaaS. Some people have added "Container as a Service" (CaaS) to the growing list of service initialisms.
With many PaaS systems, you can work only within the platform and don't have unrestricted access to system-level resources. If you can work with the full file system and run whatever you like, then it's harder to say whether a system is PaaS or IaaS. Some people call it IaaS+. Perhaps it's most useful to think of it as both PaaS and IaaS.
The virtual environment
A virtual machine in a cloud environment always runs under a hypervisor. It controls the launching of the VM, allocation of resources, and monitoring. The user typically has access to the hypervisor through a dashboard that indicates the status of all owned VMs and allows managing them.
Normally VMs belonging to different customers share hardware. This might be a concern to businesses that require the highest level of security. Virtual machines are isolated from one another, but there's always the hypothetical possibility of a bug or a memory leak. For these situations, a "private cloud" may be more acceptable. It operates like the usual public cloud service, except that the customer has exclusive use of a certain set of hardware.
IaaS combines the benefits of having full control of a server with the flexibility and reliability of cloud service. At the same time, it requires almost as much attention as leasing a server. For some situations, it's the right choice.
Container-based IaaS (or CaaS, if you prefer) lets the customer deploy containers rather than VMs. For setting up a standardized application and dynamically deploying a lot of instances on demand, containers are simpler to configure and faster to launch than virtual machines. This approach makes it easy to run low-overhead deployments without sacrificing the low-level control that IaaS offers. The orchestration platform makes it easy to manage all the instances.
To see Containership Cloud, our orchestration platform, in action, click here to get started.