Infrastructure as a Service (IaaS) describes a delivery model of cloud computing services which gives system administrators access to cloud-hosted virtual computers and system primitives used to architect and operate hosted software systems.
The National Institute of Standards and Technology (NIST) defined infrastructure as a service (IaaS) in its 2011 definition of cloud computing:
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, and deployed applications, and possibly limited control of select networking components such (ex. host firewalls).
Infrastructure as a service is typically characterized by high-level APIs and integration libraries which help software engineers develop software which is compatible with the IaaS provider. IaaS may also entail the use of cloud orchestration technologies such as OpenStack, Apache CloudStack, or OpenNebula. These software components assist with the creation of virtual machines, decides which hypervisor (the physical machine driving a compute cluster), enables virtual machine migration between hosts, allocates storage to VMs, and track and display usage information.
The alternative to using VMs is to use containerization tools such as Docker, Kubernetes, DqiQ, Amazon Elastic Container Service, Red Hat OpenShift, and other proprietary or open source options.