The stack drawn layer by layer: which chores you keep and which you hand off at IaaS, PaaS and SaaS — and how to choose per workload, not per company.
The line was always going to move
There are three ways to have bread. You can grow the wheat, mill it, and bake — owning every step and every failure. You can buy the dough and bake it yourself, letting someone else handle the parts that are tedious and easy to get wrong. Or you can buy the loaf. All three end in bread; they differ only in how much of the work you kept, and the right choice depends entirely on whether you are a farmer, a household, or simply hungry.
Cloud service models are the same decision applied to the stack you met in Class One. Back then you were shown seven layers and a red line of accountability, and told plainly that the line would move — that you would draw it three more times in this class. Here they are. IaaS, PaaS and SaaS are not three products. They are one stack with the line drawn at three different heights.1
The higher the line sits, the more the provider carries and the less you touch. What never changes — and this is the callback worth tattooing on — is the top of the stack. In every model, your data and your identities stay above the line. You can rent the baking; you cannot rent being the one accountable for what comes out.
It helps to name the two dials so you never confuse them again. The service model — this class — is a statement about how much of the stack you manage. The deployment model — Class Five — is a statement about where it physically runs and who else shares the hardware. They turn independently: you can run IaaS in a private datacentre or PaaS in a public cloud, and every combination is legal. When an interviewer asks whether App Service is "public or private," they are not testing your recall; they are checking whether you know the question mixes two dials that have nothing to do with each other. Keep them apart and this whole phase stays simple.
One more framing before the picture, because it is the frame that pays your salary. Moving up the stack is not moving toward "better" — it is moving work off your plate in exchange for freedom you give up. Each rung deletes a category of chore and, in the same motion, deletes a category of choice. The engineer's job is not to climb as high as possible; it is to stop climbing at the exact rung where the chores you shed stop being worth the choices you surrender. That rung is different for every workload, which is the whole reason this class ends where it does.
IaaS — maximum control, maximum chores
- IaaS
- Infrastructure as a Service. You rent virtual machines, disks and networks; the provider runs the hardware and virtualisation, and everything above — operating system, patches, runtime, application — is yours.
IaaS is the closest thing to the server you used to buy, minus the loading dock. You choose the size, install the operating system, and from that moment you own its upkeep: the security patches on the second Tuesday of the month, the disk that fills silently, the runtime that needs upgrading, the backup that must be tested rather than merely configured. In exchange you get near-total control — any operating system, any software, any peculiar dependency a fifteen-year-old application insists upon.
That control is the reason to choose it and the price you pay for choosing it. Control is not a trophy; it is a to-do list. Every layer the provider hands back to you is a layer you are now on call for. IaaS earns its keep when a workload genuinely needs that latitude — a legacy application, a licence bound to a specific environment, software the managed platforms will not host — and quietly punishes you when it does not, by handing back chores you never actually wanted.
On Azure the canonical IaaS building blocks are Azure Virtual Machines for compute, managed disks for their storage, and a Virtual Network to put them on — the exact trio you will wire together by hand in Phase Two. What "you own the OS" means in practice is precise and unglamorous: you pick the image, you sit inside the monthly patch cycle, you watch the disk so it does not fill at two in the morning, and you configure the network security rules that decide what can reach the machine at all. Azure runs the hypervisor, the physical host and the datacentre beneath; the line stops there, and everything above it has your name on the on-call rota.
Know the cases that genuinely earn IaaS, because they are the ones an interviewer will probe. A vendor application certified only on a specific operating-system build. A licence bound to a particular machine or MAC address — Campux's POS batch job, precisely. Software the managed platforms simply will not host, or a kernel-level agent that needs privileges PaaS never grants. In each, the control is not indulgence; it is the requirement. Outside those cases, reaching for IaaS "to be safe" is how a small team ends up staffing a datacentre it went to the cloud to escape.
Watch the billing shape too, because it is the other half of the trade. An IaaS virtual machine bills for the time it exists, running or idle — a box you rent by the hour whether or not anyone is using it. That is fine for a workload that is busy most of the time and a slow leak for one that spikes and sleeps: Campux's storefront would sit near-idle every January, paying full rate for capacity nobody touches. Keep that picture handy, because it is exactly the weakness the next rung's serverless billing is built to remove.
PaaS — the trade that usually wins
- PaaS
- Platform as a Service. You deploy your code and your data; the provider runs the operating system, the runtime, the patching and the scaling machinery beneath it.
PaaS raises the line one notch, and that single notch is where most modern workloads want to live. You bring the application and its configuration; the platform absorbs the operating system, the runtime, the patch cycle and the tedium of scaling. Azure App Service, Azure SQL Database and Azure Functions are all PaaS — you hand over code or queries, and the second-Tuesday patch is somebody else's calendar entry.
Control is a cost, not a prize.
The reason PaaS "usually wins" is that most teams do not actually want to administer an operating system; they want their software to run, scale, and stay patched without a human remembering to. PaaS trades a slice of control for a large reduction in chores, and for the majority of applications that is the trade that pays.2 It has limits — less freedom to install arbitrary software, occasional constraints on runtime versions — but for a storefront that needs to survive a November peak without a team babysitting virtual machines, those limits are a fair price. You will spend Phase Two putting Campux's storefront exactly here.
Serverless — PaaS at its logical end
One member of the PaaS family carries its own name on the exam, and earns it. Serverless — Azure Functions is the canonical example — means you hand the platform a function rather than an application, and the platform runs servers you never see, size or patch: it allocates them when an event arrives, scales them with the load, and scales them to zero when the work stops. The billing follows the same shape — you pay per execution rather than per hour of a machine sitting ready, which is why a function that fires only when Campux's November orders arrive can cost close to nothing in January. It is still the PaaS family by the test that matters: the line sits in the same place, your code and data above it, everything else below.1 Put the two billing shapes side by side and the appeal is obvious: the IaaS box from the last section bills for every idle hour, while the serverless function bills only for the milliseconds it actually runs. A tidy-orders job that fires a few thousand times in November and almost never in January costs real money on an always-on VM and rounding-error pennies as a function — the meter follows the work instead of the clock. That is the same elasticity argument from Class Two, now expressed in code rather than servers. When an examiner asks you to describe serverless, say those three things — no servers to manage, scale to zero, pay per execution — and you have said all of it.
Where PaaS pushes back
PaaS is not a free lunch, and pretending it is gets junior engineers into trouble the first time an abstraction leaks. You give up the freedom to install arbitrary software on the host, you accept the runtime versions the platform is willing to offer, and you live inside its quotas — a request-per-second ceiling, a connection cap, an execution-time limit that is invisible at low load and abruptly fatal at ten times it. The failure mode is distinctive: everything works in testing, then a real peak arrives and the platform enforces a limit you never knew you had. The skill is not avoiding PaaS; it is reading the limits before the peak, so the day you outgrow a tier is a slider you move on purpose, not an outage you explain afterward. A managed platform trades your operational freedom for the provider's operational competence — a trade that pays for most workloads and quietly costs you for the few with genuinely unusual needs.
SaaS — buying the whole loaf
- SaaS
- Software as a Service. You use a finished application over the internet. The provider runs all of it; you bring only your data, your users and your configuration.
SaaS is buying the loaf. Microsoft 365, Salesforce, a payroll system reached through a browser — you do not deploy code or manage a runtime, you sign in and use software someone else builds, runs and patches. The line sits at its highest here, leaving you only the two layers that can never be delegated: your data, and the question of who is allowed to see it.
Which is precisely why the "we own nothing" objection misreads the model. You still own the two layers that matter most — and they are the two that breach. A misconfigured sharing setting, a departed employee whose access was never revoked, a mailbox rule quietly forwarding invoices to an outside address: none of those are the provider's to prevent. SaaS removes the chores of running software; it does not remove the responsibility for your data and your identities. That responsibility does not delegate, in any model, ever.
Make the split concrete with Campux's own Microsoft 365. Microsoft runs the mail servers, the software, the patching, the datacentre — the entire application. What stays with Campux is the configuration and the accounts: who is a member of which group, which files are shared with the whole internet versus the finance team, whether a departed employee's mailbox was actually disabled, whether multi-factor authentication is enforced or merely available. Every one of those is a setting on Campux's side of the line, and every large SaaS breach you will read about lived in exactly that column — a public bucket, an over-shared drive, a token that was never revoked. The provider was not breached. The tenant was misconfigured. Learning SaaS well means learning that "someone else runs it" and "someone else is accountable for it" are two different sentences, and only the first is true.
Play it through
Three minutes, one question asked of five workloads: who patches the operating system underneath this? Sort them between you and Azure in any order; a wrong bin bounces back and tells you what it would have cost. It plays on its own and stops when it needs your hands.
Choose per workload, not per company
The most common mistake at this point is to pick a model for the whole organisation — "we're a PaaS company," "we're going all-IaaS for control." A company is not one workload. The correct unit of decision is a single system, and a healthy estate almost always runs all three models at once.
| Layer | On-prem | IaaS | PaaS | SaaS |
|---|---|---|---|---|
| Physical & network | You | Provider | Provider | Provider |
| Virtualisation | You | Provider | Provider | Provider |
| OS & patching | You | You | Provider | Provider |
| Runtime & middleware | You | You | Provider | Provider |
| Application | You | You | You | Provider |
| Configuration & settings | You | You | You | You |
| Data | You | You | You | You |
| Identity & access | You | You | You | You |
The on-prem column is there for contrast: every cell says You, which is where Campux's closet started, and reading left to right you can watch the provider take over the stack one layer at a time. Read the bottom three rows across all four columns. They say You every time — your settings, your data, your identities.3 That is Figure 2 from Class One, restated as a table: the line moves, the top never does. Note the split the table makes that the figure cannot: in SaaS the provider runs the application, but how it is configured — who can share what, which rules forward where — never stops being yours.
So how do you actually choose, workload by workload? Not by preference, and not by which acronym sounds most modern. You choose by asking three questions in order and stopping at the first "yes." The order matters: it starts from the highest rung — the least work — and only descends when a real requirement forces it. That is the discipline behind "PaaS usually wins" made mechanical.
Read against the ladder, the Azure catalogue stops being a wall of names and becomes three shelves. Learn one exemplar on each and you can place almost anything by asking which it most resembles.
- IaaS · Azure VM
- A machine you size, patch and secure yourself, on Azure's hardware. Reach for it only when a requirement forbids the rungs above — a machine-bound licence, an unusual OS, kernel-level software.
- PaaS · Azure App Service
- You deploy the storefront's code; Azure runs the OS, the runtime, the patching and the scaling. The default rung — most web workloads want to live here and should have to justify leaving.
- SaaS · Microsoft 365
- A finished product Campux signs into. Microsoft runs all of it; Campux owns only its data, its accounts and how the thing is configured — the two layers that never delegate.
When the three boxes turn out to be a spectrum
Hold the three names loosely enough to survive the messy catalogue, because the real world lives in the gaps between them. Someone will ask whether containers "are" IaaS or PaaS, and the honest answer is between: a container on a VM you patch leans IaaS; the same container on a fully managed platform leans PaaS; a serverless function is PaaS pushed to its logical end. A "managed" open-source database sits a notch above the version you host yourself. None of this breaks the model — it is the model, used with the honesty that the line moves in fine gradations, not just three jumps. So when a service resists a tidy label, stop arguing about the box and ask the one question that always decides it: which layer do you stop being responsible for? Answer that and you have placed the thing, whatever the marketing calls it.
One company, three models
You map Campux's systems to the models, one workload at a time. The e-commerce storefront goes to PaaS — Azure App Service — because it needs to scale for November without anyone administering an operating system, and it carries no exotic dependency that would forbid a managed platform. The POS batch job stays on IaaS, a self-managed virtual machine, for now — its licence is bound to a specific machine, exactly the case where IaaS control is not a luxury but a requirement, and the reason you refused to migrate it in Class Three. Staff email is already SaaS on Microsoft 365, and nobody sane proposes running a mail server to save money.
Three workloads, three models, one company — and the reasoning for each is a property of the workload, not a slogan about the company. When leadership asks "so which are we," the honest answer is "all three, on purpose." Hold this map; Phase Two builds every piece of it.
Zoom out: every layer you hand off is control traded for chores you keep
You can place a workload on the IaaS–PaaS–SaaS ladder. Now reason about what each rung does to the whole system, because moving up the stack changes not just who patches, but who can answer when it breaks.
PaaS removes the OS chores, so the team's low-level skills fade, so when an abstraction leaks — a timeout, a cold start, a quota — nobody has the muscle to reason below it. What keeps enough understanding to debug the thing you no longer run?
The higher the rung, the more tightly you are coupled to the provider's shape of the service — its limits, its versions, its opinions. SaaS hands off the most work and ties you down the most, both at once; be clear which half you are buying.
The rung does not remove work, it relocates it: on IaaS the constraint is your ops capacity, on PaaS the service's limits and quotas, on SaaS the vendor's roadmap. Choosing a rung is choosing which wall you will hit.
"Just use the managed service" saves months — and hides the cost until scale or a compliance ask forces a migration off it, which is far more expensive than the IaaS version would have been to run from the start.
A PaaS default sized for today — a tier, a connection cap, a request limit — is invisible at low load and fatal at ten times it. Which of them is a slider you move, and which is a re-platform?
The engineer who ships is asked "which service?" The engineer who gets promoted is asked "and what does that rung cost you the day it leaks?" — and has already found the abstraction's edge.
How much of the stack do you want to own?
"Should we run our own database server?" You draw the three tiers on the whiteboard and ask the only question that matters: how much of the stack do we want to be responsible for? The team does not need to patch an operating system to store orders, so PaaS wins — you trade away control you never wanted for a Saturday you get back. The acronym stops being trivia and becomes a decision.
Examination
Four drills, then two situations. The situations have no marking scheme — write your answer before you reveal the reasoning, or the exercise is worthless. Nothing is stored; this is between you and the page.
A. Owning the operating system and its patch cycle is the signature of IaaS — the provider stops at the virtualisation layer and hands you everything above. D is the trap for someone who half-remembers Class One: a self-patched VM is still on-demand, networked and metered, so it is very much cloud; it is simply the model where the most chores stay with you. If you can name who applies the patches, you can name the model.
C. A finished application used over the internet is SaaS. The sharp distinction is between C and D: SaaS lifts away the software chores, but the top two layers never move — Campux still owns the mailbox contents and the accounts that reach them. D is the belief that ends with a former employee's account still live three months after they left, or a forwarding rule nobody audited siphoning invoices out. "We own nothing" is how SaaS breaches happen.
App Service, Azure SQL Database, Azure Functions. In each you supply code or data and never touch the operating system beneath. The self-managed VM running SQL Server is IaaS — you own the OS and the patching — and it is the trap, because "SQL" appears in both it and Azure SQL Database while the models are opposite. Microsoft 365 is SaaS. The test is never the product's name; it is which layer you stop being responsible for.
SERVICE-MODEL ASSIGNMENT — Campux migration
1. Storefront on Azure App Service ............ PaaS
2. POS batch on a self-managed VM ............. IaaS
3. Staff email on Microsoft 365 .............. SaaS
4. Orders database on Azure SQL Database ..... IaaS
Line four. Azure SQL Database is a managed platform service — PaaS, not IaaS. You hand Microsoft the queries and the data; they run the operating system, the patching and the engine. IaaS would be SQL Server that you installed on a VM you patch, which is line two's situation, not line four's.
Consider the consequence. Labelled IaaS, that database gets a work item to "patch the OS monthly" that no one can ever action, an on-call expectation for a layer Microsoft already owns, and a security review that hunts for a server that does not exist. A wrong model label quietly manufactures phantom chores and phantom accountability. Getting the label right is what makes the responsibility map true.
Control is not free; it is paid in chores, and chores are paid in people. Do not argue that the director is wrong to want control — argue what all-IaaS actually costs. Every workload on IaaS means your six people now own operating-system patching, runtime upgrades, scaling configuration and backup testing for every system, forever. That is not control; it is a second job none of them applied for.
Cost it in their units. The storefront on PaaS survives November because the platform scales it; on IaaS, someone configures and tests that scaling by hand before the peak, and is awake during it. Put a number on the salary-hours all-IaaS adds, and set it against the zero features it produces. Control that buys nothing is just overhead wearing a confident word.
Offer the real principle: choose the lowest-chore model each workload can tolerate, and reserve IaaS for the workloads that genuinely need it — like the POS batch job, whose licence forces it. "Control where it pays, managed everywhere else" is the answer that respects the director's instinct without staffing a data centre to satisfy it.
The model follows the workload, not the company. Consistency across an estate is a comfort, not a virtue — the thing to be consistent about is the method, not the answer it produces. Applied honestly, one method routinely yields three different models under one roof.
Walk them through the two workloads. The storefront has a sharp peak, no exotic dependency, and every reason to avoid babysitting an operating system — so it takes the lowest-chore model that fits, PaaS. The POS batch job has a licence nailed to one physical machine; that single constraint forbids a managed platform and forces IaaS, chores and all. Same method, different facts, different result.
Give them the reusable rule: pick the model with the fewest chores each workload can actually tolerate, and let requirements — not tidiness — decide. Once they hold that, "isn't it inconsistent?" answers itself: it is consistent, in the only place that matters.
Five things worth carrying out of this class
- IaaS, PaaS and SaaS are one stack with the accountability line drawn at three heights — not three separate products.
- The line rises from IaaS to SaaS, but never above your data and identities. The top of the stack is yours in every model.
- IaaS is maximum control and maximum chores; PaaS trades a little control for far fewer chores, and usually wins.
- SaaS removes the software chores, never the responsibility for your data and who can reach it.
- Choose per workload, not per company. A healthy estate runs all three at once, each for a reason you can name.
- The three-model split is a teaching model, and the real world blurs its edges. Containers and serverless sit between IaaS and PaaS; "managed" versions of open-source databases keep shifting the line upward. Treat IaaS/PaaS/SaaS as three named points on a continuum, not three sealed boxes — the continuum is the truth, the three names are the handles. ↩
- "Usually wins" is a tendency, not a law. Plenty of sound architectures are mostly IaaS for good reasons — specialised software, licensing, regulatory isolation. The claim is only that for a typical web workload run by a small team, PaaS is the default that should have to be argued out of, not into. ↩
- Different vendors draw the responsibility boundaries slightly differently, and some charts split "application" or "identity" into shared rows. The exact cell shading varies; the load-bearing fact does not, and it is the one to defend in an interview: data and identity never leave the customer's side of the line. ↩
Next: public, private, hybrid — and which one your first job actually runs.
Next · Public, Private, Hybrid →