The difference between the models is just one question: where is the boundary between what you manage and what the provider manages. The higher you go, the less you manage — and the less control you have.
Four columns, each with nine layers top to bottom: Applications, Data, Runtime, Middleware, OS, Virtualization, Servers, Storage, Networking. On-premises you manage every layer. In IaaS the provider owns virtualization and below while you own the OS and up. In PaaS only applications and data stay with you. In SaaS the provider runs everything and you keep accounts, access and data.
On-Premises
- Customer manages: Datacenter, Network, Servers, Storage, Virtualization, OS, Middleware, Runtime, Data, Applications.
- Provider manages: Nothing.
IaaS (Infrastructure as a Service)
- Examples: AWS EC2, Azure Virtual Machines, GCP Compute Engine.
- Customer manages: OS, Middleware, Runtime, Applications, Data.
- Provider manages: Datacenter, physical network, physical servers, Storage, Virtualization.
PaaS (Platform as a Service)
- Examples: Azure App Services, AWS Elastic Beanstalk.
- Customer manages: Applications, Data.
- Provider manages: Physical infrastructure, OS, Middleware, Runtime, Patching.
SaaS (Software as a Service)
- Examples: Microsoft 365, Google Workspace.
- Customer manages: Accounts, identities, access control and data.
- Provider manages: All infrastructure, OS, application and updates.