Build the mental model
Cloud computing means using computing resources — servers, storage, databases, networking — provided over a network by someone else, rather than owned on your own hardware. "Someone else's computer" is a common joke, and a reasonable starting point.
But that undersells it. Cloud platforms provide managed services — databases that handle their own backups, storage built to survive hardware failure, networking a specialized team would otherwise need to build. You're renting expertise, not just a machine.
| Model | Control vs Convenience |
|---|---|
| IaaS | Most control — you manage the OS and runtime; typical use: custom server setups, specialized workloads. |
| PaaS | Balanced — deploy code, the platform manages servers and scaling; typical use: most web applications. |
| SaaS | Most convenience — use a finished app, nothing to manage; typical use: email, CRM, support tools. |
Moving from IaaS toward SaaS trades control for convenience, and neither end is universally correct — the right choice depends on what a project actually needs to manage itself.
- IaaS
- Infrastructure as a Service — rents raw computing building blocks (virtual servers, storage, networking); you manage the OS and everything above it.
- PaaS
- Platform as a Service — you deploy application code; the platform manages the underlying servers, OS, and scaling automatically.
- SaaS
- Software as a Service — you use a finished application over the internet, with no infrastructure of any kind to manage.
IAAS TO SAAS: ABSTRACTION INCREASES
-----------------------------------
[MORE CONTROL, MORE WORK] [LESS CONTROL, LESS WORK]
IaaS --------> PaaS --------> SaaS
(servers, (deploy code, (use the app,
storage, platform nothing to
networking) handles rest) manage)Connect it to a real scenario
Choosing a model usually comes down to operational responsibility. Deep control over the OS or specific versions points to IaaS; writing code without configuring servers points to PaaS; needing a capability rather than a platform points to SaaS.
Most real organizations mix models rather than picking one for everything — core application on PaaS, several SaaS tools for internal operations, one specialized workload on IaaS because it needs a configuration no managed platform offers.
- Do you need control over the OS or specific software versions? -> IaaS
- Do you just want to deploy code and let the platform handle servers? -> PaaS
- Do you just need a working tool, not a platform to build on? -> SaaS
Try the working example
function recommendModel(wantsToManage) {
if (wantsToManage === "servers-and-os") return "IaaS";
if (wantsToManage === "just-my-code") return "PaaS";
return "SaaS";
}
const preferences = ["servers-and-os", "just-my-code", "nothing-just-use-the-app"];
for (const pref of preferences) {
console.log(`${pref} -> ${recommendModel(pref)}`);
}servers-and-os -> IaaS
just-my-code -> PaaS
nothing-just-use-the-app -> SaaS5-minute try-it
Add a fourth preference string, such as 'i-just-need-email', to the preferences array and extend recommendModel() with one more condition so it correctly returns 'SaaS' for it without breaking the existing three cases.
One important caution
Choosing IaaS for a simple web app that would run fine on PaaS, taking on server maintenance work that buys nothing.
Assuming SaaS tools require zero decisions — data ownership, export options, and vendor lock-in still matter.
NIST SP 800-145: The NIST Definition of Cloud Computing — Cloud & Deployment