Infrastructure as a service (IaaS)
Rent virtual machines, disks and networks through an API and pay for the time they exist; the provider runs the hardware and the hypervisor, and you run everything from the operating system up.
5 technologies on this page ↓How it works
A provider fills data centers with servers, storage and network gear, splits the servers into virtual machines with a hypervisor (Compute Engine uses KVM), and puts all of it behind an API. The console, the CLI, the SDKs and tools such as CloudFormation are clients of that API. To launch a machine you name four things: an image, which is a template holding the operating system and any extra software (an AMI on EC2); a size, which fixes the CPU, memory, network and storage (an instance type on EC2, a flavor on OpenStack); a key pair, whose public half the provider injects for SSH; and a network with firewall rules (a security group). The control plane then picks a physical host. In OpenStack’s Nova, an API service receives the HTTP request, a scheduler “decides which host gets each instance”, and a compute service running on that host drives the hypervisor to boot it. Disks are separate resources: an EBS volume is persistent and can outlive the instance, while instance store volumes are deleted when the instance stops or terminates. On first boot an agent such as cloud-init reads the user data you passed at launch (at most 16 KB on EC2) and sets the hostname, creates users and runs your scripts. From then on the machine is yours to run: NIST gives the consumer control over “operating systems, storage, and deployed applications” and possibly host firewalls, but not the infrastructure beneath. Billing follows the clock, not the work: EC2 bills Linux On-Demand instances per second with a 60-second minimum, whether the CPU is busy or idle.
Renting units in a warehouse. The landlord owns the building, the power, the loading docks and the guard at the gate, and will give you another unit on a phone call and take it back when you’re done. What goes on the shelves, how they’re arranged and who gets a key to your unit are your problem, and if you leave the door unlocked, the guard at the gate won’t notice.
Reach for it when
- Moving an existing server with its operating system, agents and configuration as it is, without rewriting the application
- Software that needs a particular OS, kernel setting, GPU or license tied to a physical server: EC2 Dedicated Hosts exist so you can use existing server-bound licenses
- Batch work that runs for minutes or hours and then stops: per-second billing ends the cost when the instance does, and Spot Instances sell unused capacity at steep discounts for jobs that can be interrupted
- Building your own platform on top, such as a Kubernetes cluster, a database you tune yourself, or a self-hosted PaaS
Think twice when
- A small team with an ordinary web app: patching the guest OS, writing firewall rules and setting up scaling all stay yours, which a PaaS or functions would take over
- Workloads that sit idle most of the time: an instance is billed for every second it runs, busy or not, while functions bill per request
- Expecting one VM to be highly available: Azure’s 99.99% connectivity guarantee needs two or more instances across two or more Availability Zones
- Keeping data on the instance’s own disk: instance store volumes are deleted when the instance stops, hibernates or terminates, so anything that matters goes on a persistent volume or in object storage
A real example
A team moves a nightly reporting job from an office server to EC2. It picks an AMI with the same Linux distribution, an instance type with enough memory, and a security group that allows SSH only from the office’s IP range. The job’s data sits on an EBS volume, so it survives when the instance is replaced. A user data script installs the job at first boot. The job runs for about 40 minutes a night, and with per-second billing the team pays for those minutes rather than for a server that sits idle the rest of the day. To cut the cost further it runs on Spot capacity and checkpoints its progress, because EC2 gives a two-minute warning before it reclaims a Spot Instance. The cloud now handles failed disks and broken hosts; patching the operating system and keeping the firewall rules tight are still the team’s job.
Technologies
Specific products, and what each does differently.
European clouds and server hosts
Providers outside the big three that rent VMs and whole dedicated servers by the hour or month, mostly from their own European data centers.
Software to run your own cloud
Open-source control planes that turn your own servers into an IaaS cloud with an API.
| European clouds and server hosts | Commercial product | OVHcloud | Proprietary | 2026-10-24 | |
| European clouds and server hosts | Commercial product | Scaleway SAS | Proprietary | 2026-10-24 | |
| European clouds and server hosts | Commercial product | Hetzner Online GmbH | Proprietary | 2026-10-24 | |
| European clouds and server hosts | Commercial product | Cherry Servers, UAB | Proprietary | 2026-10-24 | |
| Software to run your own cloud | Open source | OpenInfra Foundation (part of the Linux Foundation since 2025)OpenInfra · Confirmed | Apache 2.0 | 2026-10-13 |
What each provider calls it
- AWS
- Amazon EC2: instances launched from AMIs, EBS and instance store volumes, security groups and VPC subnets; On-Demand billed per second (60-second minimum on Linux), plus Spot Instances, Savings Plans, Reserved Instances and Dedicated Hosts
- Google Cloud
- Compute Engine: self-managed VM and bare metal instances on a KVM hypervisor, configured through the console, the gcloud CLI or a REST API
- Azure
- Azure Virtual Machines with managed disks, virtual networks and network security groups; Virtual Machine Scale Sets for groups that grow and shrink with demand
- Open source & others
- OpenStack (Apache 2.0): Nova places and runs instances, mostly on KVM, with images, flavors, volumes, security groups and floating IPs; cloud-init for first-boot setup
The same parts under different names#
Every IaaS cloud asks for the same handful of things when you create a machine. The names differ.
| Part | Amazon EC2 | Azure | OpenStack |
|---|---|---|---|
| The machine | Instance | Virtual machine | Instance (server) |
| What it boots from | AMI | Image | Image, snapshot or volume |
| Its size | Instance type | VM size | Flavor |
| Persistent disk | EBS volume | Managed disk (OS disk and data disks) | Block storage volume |
| Firewall rules | Security group | Network security group | Security group |
| First-boot script | User data (up to 16 KB) | Custom data (up to 64 KB) | User data, read by cloud-init |
- Azure’s OS disk is usually 127 GiB and is billed at the regular rate for disks; Azure recommends keeping data on a separate disk so it can be detached and attached to a new VM.
- Azure also has a separate user data feature, which stays readable from the instance metadata service for the VM’s lifetime; custom data is processed once by the provisioning agent at first boot.
Ways to pay for the same machine#
IaaS pricing trades flexibility for discount. These are EC2’s options; other clouds have close equivalents.
On-Demand
per secondPay for the time an instance runs, billed per second with a 60-second minimum, with no commitment. Since October 2017 for Linux; Windows and Linux distributions with their own hourly charge were left out of that change.
Spot
interruptibleRequest unused capacity at a steep discount. EC2 can reclaim it, and sends a two-minute interruption notice first, so it suits data analysis, batch jobs and background processing that can be interrupted.
Savings Plans
1 or 3 yearsCommit to a steady amount of usage in USD per hour for one or three years, in exchange for a lower rate.
Reserved Instances
1 or 3 yearsCommit to a specific instance configuration, including type and Region, for one or three years.
Dedicated Hosts
whole serverA physical server for your use only, so you can bring server-bound software licenses and meet compliance rules.
In code · bash
# Launch one VM: an image, a size, a key, a network and firewall rules
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type t2.micro \
--count 1 \
--subnet-id subnet-08fc749671b2d077c \
--key-name MyKeyPair \
--security-group-ids sg-0b0384b66d7d692f9 \
--user-data file://my_script.txt # run as root on first boot
# The same request on an OpenStack cloud
openstack server create --image ubuntu-24.04 --flavor m1.small \
--key-name mykey --network private --security-group web \
--user-data my_script.txt web-1Often confused with
Where it came from2006–2017
Before IaaS, more servers meant a purchase order. Google describes procurement processes that can take months, plus rooms with power and cooling and staff to run the machines, and the risk of either running out of capacity or paying for capacity nobody uses. On August 24, 2006, Amazon put EC2 into beta: a web service that “provides resizable compute capacity in the cloud”, gave “complete control of your computing resources”, cut the time to obtain and boot a server “to minutes” and charged only “for capacity that you actually use”.
Others followed with their own machines and an open-source alternative. In July 2010 Rackspace and NASA announced OpenStack, built from NASA’s Nebula platform and Rackspace’s Cloud Files, to be a cloud platform for “public and private clouds regardless of size”; its first release, Austin, came out on October 21, 2010. In September 2011 NIST’s SP 800-145 defined IaaS by what the consumer controls. On June 28, 2012, Google announced Compute Engine at Google I/O to provide “general purpose virtual machines” next to App Engine, and on April 16, 2013, Microsoft made Windows Azure’s Virtual Machines and Virtual Networks generally available, backed by an enterprise SLA.
The model then got finer-grained rather than different. On October 2, 2017, EC2 moved Linux instances and EBS volumes from hourly billing to per-second billing with a 60-second minimum, so short jobs stopped paying for the rest of the hour. OpenStack, released under Apache 2.0 and supported by the OpenInfra Foundation, turned 15 on July 19, 2025.
Why it’s built this way
- Rent whole virtual servers, not a new programming model
- EC2 aimed to make “web-scale computing easier for developers” by handing them servers they fully control, so existing software could move without being rewritten.
- Everything through a self-service API
- NIST lists on-demand self-service, provisioning “without requiring human interaction with each service provider”, as an essential cloud trait. OpenStack likewise describes pools of compute, storage and networking “managed and provisioned through APIs”.
- Bill by use, then by the second
- Paying only for capacity used was EC2’s pitch in 2006. In 2017 AWS cut the unit to one second because dev/test, data processing, batch and rendering jobs run for irregular periods and were paying for the unused minutes of each hour.
- An open-source cloud stack
- Rackspace and NASA started OpenStack so organizations could run cloud services on standard hardware in their own data centers as well as public ones, with the code released under Apache 2.0.
Timeline
- 2006
Amazon EC2 enters beta on August 24
- 2010
Rackspace and NASA announce OpenStack in July; first release, Austin, on October 21
- 2011
NIST SP 800-145 defines infrastructure as a service
- 2012
Google announces Compute Engine at Google I/O on June 28
- 2013
Windows Azure Virtual Machines become generally available on April 16
- 2017
EC2 switches Linux instances to per-second billing on October 2
- Google Cloud: What is IaaS? (procurement, capacity, shared responsibility)
- AWS What’s New: Announcing Amazon Elastic Compute Cloud (Amazon EC2), beta (Aug 24, 2006)
- Wikipedia: OpenStack (Rackspace and NASA, July 2010; Austin release, Oct 21, 2010)
- NIST SP 800-145: The NIST Definition of Cloud Computing (Mell and Grance, Sept 2011)
- Google Cloud Platform Blog: Google Compute Engine launches, expanding Google’s cloud offerings (June 28, 2012)
- ScottGu’s Blog: Windows Azure: General Availability of Infrastructure as a Service (IaaS) (Apr 16, 2013)
- AWS What’s New: Announcing Amazon EC2 per second billing (Oct 2, 2017)
- OpenStack Blog: Celebrating 15 Years of OpenStack! (Feb 5, 2025)
- OpenStack: Software overview (pools managed through APIs, Apache 2.0, OpenInfra Foundation)
Sources15
- NIST SP 800-145: The NIST Definition of Cloud Computing (IaaS definition, essential characteristics)
- Amazon EC2 User Guide: What is Amazon EC2? (AMIs, instance types, EBS and instance store, key pairs, security groups, pricing options)
- Amazon EC2 User Guide: Run commands when you launch an EC2 instance with user data input (16 KB, first boot, root)
- Amazon EC2 User Guide: Spot Instances
- Amazon EC2 User Guide: Spot Instance interruption notices (two-minute warning)
- AWS What’s New: Announcing Amazon EC2 per second billing (Oct 2, 2017)
- AWS CLI Command Reference: aws ec2 run-instances (examples)
- Google Cloud docs: Compute Engine overview (IaaS, KVM hypervisor, VM and bare metal instances)
- Microsoft Learn: Overview of virtual machines in Azure (disks, NSGs, availability zones, scale sets)
- Microsoft Learn: Custom data on Azure virtual machines (64 KB, cloud-init, user data)
- OpenStack Nova docs: Nova system architecture (API, scheduler, compute, KVM)
- OpenStack Nova docs: Launch instances (images, flavors, key pairs, security groups, volumes)
- OpenStackClient docs: server commands (server create)
- cloud-init docs: Introduction to cloud-init
- Google Cloud: What is IaaS?