Cloud Computing
Cloud Service Models Explained: IaaS, PaaS, SaaS
IaaS gives you raw infrastructure (servers, storage, networking) that you manage yourself. PaaS gives you a platform where you deploy code without managing servers. SaaS gives you a finished application you use through a browser. These three models represent a spectrum from maximum control to maximum convenience, and understanding them is fundamental to every decision in cloud computing.
Every cloud service you encounter fits into one of these categories. Knowing which model you are working with tells you what you are responsible for, what the provider handles, and what trade-offs you are making. This guide breaks down each model with concrete examples, a clear comparison, and practical guidance for DevOps engineers.
The pizza analogy
The most intuitive way to understand cloud service models is through pizza.
On-premises (make pizza at home): You do everything. Buy ingredients, make the dough, add toppings, heat the oven, bake it, serve it, wash the dishes. You have complete control and complete responsibility.
IaaS (take-and-bake pizza): Someone provides the kitchen, the oven, and the utilities. You bring the ingredients, make the pizza, and bake it yourself. You control the recipe, but you do not maintain the kitchen.
PaaS (pizza delivery): You choose the toppings and place the order. Someone else makes the dough, assembles the pizza, bakes it, and delivers it. You decide what you want but do not manage the process.
SaaS (eat at a restaurant): You sit down and eat. Someone else handled everything: the ingredients, the kitchen, the cooking, the serving, the cleaning. You just consume the finished product.
Each step up the chain trades control for convenience. That same trade-off defines how these models work in cloud computing.
IaaS: Infrastructure as a Service
IaaS provides the fundamental building blocks of computing: servers, storage, and networking. The cloud provider manages the physical hardware, power, cooling, and network connectivity. You manage everything above that: the operating system, runtime, application code, and data.
What you get
- Virtual machines (compute) -- servers you can configure however you need
- Block storage -- virtual hard drives for your servers
- Object storage -- scalable storage for files, backups, and media
- Networking -- virtual networks, load balancers, firewalls, DNS
What you manage
- Operating system (patching, security hardening)
- Runtime and middleware
- Application code
- Data
- Scaling and availability
Real-world examples
| Service | Provider | What it provides |
|---|---|---|
| EC2 | AWS | Virtual servers |
| S3 | AWS | Object storage |
| VPC | AWS | Virtual networking |
| Azure Virtual Machines | Azure | Virtual servers |
| Google Compute Engine | GCP | Virtual servers |
| DigitalOcean Droplets | DigitalOcean | Virtual servers |
| Elastic Block Store (EBS) | AWS | Block storage for EC2 |
When to use IaaS
IaaS is the right choice when you need:
- Full control over the operating system -- custom kernel settings, specific OS versions, specialised software
- Complex networking -- custom VPCs, VPN connections, multi-region architectures
- Regulatory compliance -- when you need to demonstrate exactly how infrastructure is configured
- Maximum flexibility -- running workloads that do not fit neatly into managed services
IaaS is where most DevOps engineers spend their time. Provisioning EC2 instances, configuring VPCs, managing security groups, setting up load balancers -- this is the core of cloud infrastructure work.
The DevOps perspective on IaaS
DevOps engineers do not click through consoles to create IaaS resources. They use Infrastructure as Code tools like Terraform to define infrastructure in configuration files, store those files in Git, and apply changes through CI/CD pipelines.
# Terraform example: creating an EC2 instance (IaaS)
resource "aws_instance" "api_server" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t3.medium"
tags = {
Name = "api-server"
Environment = "production"
}
}
This is IaaS managed the DevOps way: version-controlled, reviewable, reproducible, and automated.
PaaS: Platform as a Service
PaaS provides a managed platform for deploying applications. The cloud provider handles the operating system, runtime, scaling, and availability. You provide the application code and configuration.
What you get
- A managed runtime environment (the platform runs your code)
- Automatic scaling (the platform adds capacity as needed)
- Built-in availability (the platform handles failover)
- Managed infrastructure (no servers to patch or maintain)
What you manage
- Application code
- Data
- Configuration (environment variables, feature flags)
Real-world examples
| Service | Provider | What it provides |
|---|---|---|
| Elastic Beanstalk | AWS | Managed application hosting |
| AWS Lambda | AWS | Serverless function execution |
| RDS | AWS | Managed relational databases |
| Heroku | Salesforce | Managed application platform |
| Google App Engine | GCP | Managed application hosting |
| Azure App Service | Azure | Managed web app hosting |
| Vercel | Vercel | Frontend deployment platform |
| ECS Fargate | AWS | Managed container execution |
When to use PaaS
PaaS is the right choice when you need:
- Faster deployment -- push code and let the platform handle the rest
- Reduced operational overhead -- no server patching, no OS management
- Automatic scaling -- the platform scales based on demand without manual intervention
- Focus on application logic -- your team's time is better spent on features than infrastructure
PaaS services are especially valuable for databases. Running your own PostgreSQL instance on EC2 means you handle backups, replication, failover, patching, and scaling. Using RDS (PaaS) means AWS handles all of that. For most teams, the operational savings justify the slightly higher cost.
The DevOps perspective on PaaS
DevOps engineers use PaaS strategically. A common production architecture mixes IaaS and PaaS:
- IaaS for the core compute layer (EC2 instances running in custom VPCs with specific security configurations)
- PaaS for managed databases (RDS instead of self-managed PostgreSQL)
- PaaS for container orchestration (ECS Fargate or managed Kubernetes)
- PaaS for serverless functions (Lambda for event-driven processing)
The goal is to minimise undifferentiated heavy lifting. If AWS can manage a database better than your team can (and they can -- they do it at a scale your team never will), use the managed service and spend your engineering time on problems that are unique to your business.
SaaS: Software as a Service
SaaS delivers fully built applications over the internet. There is no infrastructure to manage, no code to deploy, and no servers to think about. You sign up, log in, and use the software.
What you get
- A complete application, ready to use
- Automatic updates and maintenance
- Accessibility from any browser or device
- The provider handles everything: infrastructure, platform, application, security, scaling
What you manage
- Your data
- Your users and access
- Configuration and settings within the application
Real-world examples
| Service | What it provides |
|---|---|
| Gmail / Google Workspace | Email and productivity |
| Slack | Team communication |
| Jira | Project management |
| Datadog | Infrastructure monitoring |
| PagerDuty | Incident management |
| GitHub | Code hosting and collaboration |
| Salesforce | Customer relationship management |
| Confluence | Documentation and knowledge base |
When to use SaaS
SaaS is the right choice when:
- The software is not your competitive advantage -- you do not need a custom email system or a custom project management tool
- Speed matters -- you need the tool working today, not after a month of development
- Maintenance is not worth the cost -- building and maintaining your own monitoring system is not worth the engineering time when Datadog exists
The DevOps perspective on SaaS
DevOps teams are heavy SaaS consumers. The DevOps toolchain itself is largely SaaS:
- GitHub for source code and CI/CD (GitHub Actions)
- Datadog or Grafana Cloud for monitoring
- PagerDuty for incident alerting
- Terraform Cloud for infrastructure state management
- Snyk for security scanning
DevOps engineers integrate these SaaS tools into their workflows through APIs, webhooks, and automation. A typical pipeline might: build code (GitHub Actions), scan for vulnerabilities (Snyk), deploy to infrastructure (Terraform), and alert on failures (PagerDuty). All SaaS tools, all connected through APIs.
The complete comparison
Here is how the three models compare across key dimensions:
| Dimension | IaaS | PaaS | SaaS |
|---|---|---|---|
| You manage | OS, runtime, app, data | App, data | Data only |
| Provider manages | Hardware, networking, virtualisation | Hardware through runtime | Everything |
| Control | High | Medium | Low |
| Flexibility | Maximum | Moderate | Minimal |
| Operational burden | High | Low | None |
| Cost model | Pay for resources | Pay for usage | Pay per user/month |
| Scaling | Manual or auto-configured | Automatic | Automatic |
| Time to deploy | Hours to days | Minutes to hours | Minutes |
| Customisation | Unlimited | Within platform constraints | Configuration only |
| Example | AWS EC2 | AWS Lambda | Gmail |
The responsibility stack
Another way to visualise the models is by what each party manages in the technology stack:
On-Prem IaaS PaaS SaaS
Applications You You You Provider
Data You You You Provider*
Runtime You You Provider Provider
Middleware You You Provider Provider
OS You You Provider Provider
Virtualisation You Provider Provider Provider
Servers You Provider Provider Provider
Storage You Provider Provider Provider
Networking You Provider Provider Provider
*In SaaS, you own your data but the provider manages where and how it is stored.
Each step from left to right shifts more responsibility to the cloud provider. That shift reduces your operational burden but also reduces your control.
How DevOps engineers use all three models
In practice, DevOps engineers do not choose one model exclusively. They select the right model for each component based on requirements.
A typical production architecture might look like this:
- IaaS: VPC networking, security groups, EC2 instances for specialised workloads, S3 for storage
- PaaS: RDS for the database, ECS Fargate for container orchestration, Lambda for event processing, CloudFront for CDN
- SaaS: GitHub for source control, Datadog for monitoring, PagerDuty for alerting, Terraform Cloud for state management
The decision for each component comes down to three questions:
- Do we need custom control over this? If yes, use IaaS.
- Is this a standard, well-solved problem? If yes, use PaaS (managed services).
- Is this a tool, not part of our product? If yes, use SaaS.
A concrete example
Consider deploying a web application:
All IaaS approach: Provision EC2 instances, install and configure PostgreSQL, set up your own Redis cluster, configure Nginx as a reverse proxy, manage SSL certificates, write scaling scripts, set up backup cron jobs.
Mixed approach: Use EC2 for the application servers (IaaS), RDS for the database (PaaS), ElastiCache for Redis (PaaS), Application Load Balancer (PaaS), ACM for SSL certificates (PaaS), and S3 for backups (IaaS).
The mixed approach achieves the same result with dramatically less operational work. The database is automatically backed up, the Redis cluster handles failover on its own, and the load balancer scales automatically. Your team focuses on the application instead of maintaining commodity infrastructure.
This is why understanding service models is not academic -- it directly affects how you design systems, how much time you spend on maintenance, and how reliable your infrastructure is.
Beyond the three models: emerging patterns
The boundary between models continues to blur as cloud services evolve.
Serverless (Function as a Service)
Serverless sits between PaaS and SaaS. You provide individual functions, and the platform runs them on demand. No servers, no containers, no capacity planning. AWS Lambda, Azure Functions, and Google Cloud Functions are the primary examples.
Containers as a Service (CaaS)
Services like AWS ECS Fargate and Google Cloud Run let you deploy Docker containers without managing the underlying servers. You provide a container image; the platform runs it, scales it, and handles the infrastructure. This sits between IaaS (running containers on EC2) and PaaS (deploying code to Elastic Beanstalk).
Database as a Service (DBaaS)
Managed databases (RDS, Cloud SQL, MongoDB Atlas) are technically PaaS, but they are so prevalent that they form their own sub-category. You create a database, connect your application, and the provider handles backups, replication, patching, and scaling.
These patterns all follow the same principle: pushing operational responsibility to the provider so engineering teams can focus on building their product.
Choosing the right model
For career purposes, here is what matters:
-
If you are learning DevOps or cloud engineering, start with IaaS. Build EC2 instances, configure VPCs, and manage servers manually. You need to understand what the managed services are abstracting away before you can use them effectively. See our guide on how to become a DevOps engineer for the full learning path.
-
If you are designing production systems, use PaaS wherever possible and IaaS only where you need custom control. Managed services are more reliable, more secure, and cheaper in engineering time than self-managed alternatives.
-
If you are evaluating tools for your team, use SaaS for anything that is not your core product. Do not build a monitoring system when Datadog exists. Do not build a CI/CD platform when GitHub Actions exists.
The best cloud engineers understand all three models deeply. They know when IaaS control is worth the operational cost, when PaaS convenience justifies the vendor lock-in, and when SaaS is the obvious choice. That judgement -- knowing which model to apply where -- is one of the most valuable skills in cloud engineering.
Frequently Asked Questions
Ola
Founder, CloudPros
Building the most hands-on DevOps bootcamp for the AI era. 16 weeks of real infrastructure, real projects, real career outcomes.
