``---
title: "IaaS Explained: What It Is, How It Works, and What Netflix Teaches Us About AWS"
published: false
description: "A practical guide to Infrastructure as a Service (IaaS), with Netflix's move to AWS as a case study and a hands-on EC2 example."
tags: cloud, aws, devops, beginners
Introduction
Not long ago, launching a product meant buying servers, waiting weeks for delivery, racking them in a data center, and hoping you had guessed your capacity correctly. Today, you can have a production-ready virtual machine in under a minute.
That shift is the result of Infrastructure as a Service (IaaS). In this article, I'll explain what IaaS is, how it compares to other cloud models, walk through Netflix's migration to AWS as a real-world case study, and finish with a hands-on example of launching a server on Amazon EC2.
What Is IaaS?
Infrastructure as a Service is a cloud computing model where a provider rents you fundamental computing resources over the internet:
- Compute (virtual machines)
- Storage (block, object, and file storage)
- Networking (virtual networks, load balancers, firewalls, IP addresses)
You pay only for what you use, and you never touch the physical hardware. The provider manages the data centers, power, cooling, physical security, and the virtualization layer. You manage everything above that: the operating system, runtime, application, and data.
IaaS vs PaaS vs SaaS
| Model | You manage | Provider manages | Example |
|---|---|---|---|
| IaaS | OS, runtime, apps, data | Hardware, virtualization, networking | AWS EC2, Azure VMs, Google Compute Engine |
| PaaS | Apps and data | Everything below, including OS and runtime | Heroku, Google App Engine |
| SaaS | Just your usage | Everything | Gmail, Slack |
IaaS gives you the most control and flexibility, at the cost of more operational responsibility.
Key Benefits of IaaS
- No upfront hardware cost. You move from capital expense (CapEx) to operating expense (OpEx).
- Elastic scaling. Scale up for traffic spikes and scale down afterward.
- Speed. Provisioning takes minutes, not weeks.
- Global reach. Deploy close to users across multiple regions.
- Resilience. Spread workloads across availability zones for fault tolerance.
Common Trade-offs
- Operational responsibility. Patching, hardening, and monitoring your OS is on you.
- Cost surprises. Elasticity cuts both ways; unmanaged resources can get expensive.
- Vendor lock-in. Deep use of provider-specific services makes migration harder.
- Shared responsibility. The provider secures the cloud; you secure what you put in it.
Case Study: Netflix on AWS
The problem
In 2008, Netflix suffered a major database corruption that disrupted DVD shipping for several days. The incident exposed a hard truth: running its own data centers with vertically scaled, single-point-of-failure systems wouldn't keep up with a business that was moving rapidly toward streaming.
The decision
Netflix began moving to AWS in 2009 and, over several years, migrated its customer-facing systems, completing the move of its streaming service in 2016. Rather than lift-and-shift, it re-architected its applications for the cloud.
What they used
Netflix relies on a wide range of AWS services, with IaaS building blocks at the core:
- EC2 for compute, running thousands of instances that scale with demand
- S3 for durable storage of data and assets
- Auto Scaling to match capacity to viewing patterns, such as evening peaks
- Multiple regions and availability zones to survive localized failures
Lessons for the rest of us
- Design for failure. Netflix famously built Chaos Monkey, a tool that randomly terminates instances in production to ensure services tolerate failure.
- Embrace elasticity. Their traffic is highly variable; paying for peak capacity 24/7 would be wasteful.
- Go beyond lift-and-shift. The biggest gains came from rebuilding around distributed, stateless services.
- Focus on your differentiator. Netflix competes on content and user experience, not on running data centers. Offloading undifferentiated infrastructure let engineers focus on the product.
Note: Netflix still operates its own content delivery network (Open Connect) for video delivery, which is a good reminder that IaaS is a tool and not an all-or-nothing choice.
Hands-On: Launching a Server on EC2
Let's put theory into practice. You'll need an AWS account and the AWS CLI configured.
1. Create a key pair
`bash
aws ec2 create-key-pair \
--key-name iaas-demo \
--query 'KeyMaterial' \
--output text > iaas-demo.pem
chmod 400 iaas-demo.pem
`
2. Create a security group
`bash
aws ec2 create-security-group \
--group-name iaas-demo-sg \
--description "Allow SSH and HTTP"
aws ec2 authorize-security-group-ingress \
--group-name iaas-demo-sg --protocol tcp --port 22 --cidr YOUR_IP/32
aws ec2 authorize-security-group-ingress \
--group-name iaas-demo-sg --protocol tcp --port 80 --cidr 0.0.0.0/0
`
Restrict SSH to your own IP. Never open port 22 to the whole internet.
3. Launch an instance
`bash
aws ec2 run-instances \
--image-id <AMAZON_LINUX_AMI_ID> \
--instance-type t3.micro \
--key-name iaas-demo \
--security-groups iaas-demo-sg \
--user-data '#!/bin/bash
dnf install -y nginx
systemctl enable --now nginx' \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=iaas-demo}]'
`
Replace <AMAZON_LINUX_AMI_ID> with the current Amazon Linux AMI for your region.
4. Verify and clean up
Grab the public IP from the console or CLI, open it in a browser, and you should see the nginx welcome page.
When you're done, terminate the instance so you aren't billed:
`bash
aws ec2 terminate-instances --instance-ids <INSTANCE_ID>
`
The same thing as code (Terraform)
In practice, you'd define infrastructure as code so it's repeatable and reviewable:
`hcl
resource "aws_instance" "demo" {
ami = var.ami_id
instance_type = "t3.micro"
key_name = "iaas-demo"
tags = {
Name = "iaas-demo"
}
}
`
IaaS and Infrastructure as Code go hand in hand: because infrastructure is just an API call, you can version, test, and automate it like any other software.
IaaS Best Practices
- Tag everything so you can track ownership and cost.
- Set budgets and billing alerts from day one.
- Use least-privilege IAM roles and avoid long-lived root credentials.
- Automate with IaC (Terraform, CloudFormation, Pulumi).
- Right-size instances and review utilization regularly.
- Design for multi-AZ if downtime matters.
When Should You Choose IaaS?
IaaS is a great fit when you need:
- Full control over the OS and runtime
- Custom or legacy workloads that don't fit PaaS
- Variable or unpredictable demand
- A foundation to build higher-level platforms on
If you'd rather not manage servers at all, PaaS or serverless options may be a better fit.
Conclusion
IaaS turned infrastructure from a physical constraint into a programmable resource. Netflix's journey shows that the real payoff isn't just renting servers, it's rethinking architecture around elasticity and failure. Whether you're launching a side project or scaling a global service, understanding IaaS is foundational to modern engineering.
What's your experience with IaaS? Did you lift-and-shift or re-architect? Let me know in the comments!
