In the previous lesson we met Azure and Contoso Airlines. Now it is time to answer the two questions that condition every later design decision: how much responsibility do I want to keep? and where is my platform going to live physically?
The first question is answered by the service models (IaaS, PaaS, SaaS and serverless) and by the shared responsibility model. The second, by Azure's geographic hierarchy: geographies, regions, region pairs and availability zones. Both decisions are hard to undo later — moving a production system to a different region is a project, not an adjustment — so they are worth understanding properly before creating your first resource.
Contents
- The service models and the control analogy
- Comparison: who manages what
- Serverless: the special case
- The shared responsibility model
- Geographies, regions and region pairs
- Availability zones and availability sets
- How to choose a region
- SLAs and their relationship with redundancy
- Contoso Airlines' decision
- Common Mistakes and Tips
- Exercises
- Conclusion
- The service models and the control analogy
The most useful analogy for understanding the service models is how you get to your destination when you travel. In every case you arrive; what changes is how much work you do and how much control you keep.
| Model | Analogy | What you do |
|---|---|---|
| On-premises | Your own car | You buy it, maintain it, park it, fill it with fuel and drive it |
| IaaS | Rental car | Someone else buys and maintains the car; you choose the model, drive and fill it with fuel |
| PaaS | Taxi | You say where you are going; the driver and the vehicle are not your problem |
| SaaS | Scheduled bus | Neither the vehicle, nor the driver, nor the route: you get on and use the service as it is |
Translated into computing terms:
IaaS (Infrastructure as a Service)
Azure gives you the virtualized infrastructure: virtual machines, disks, networks. You install the operating system (or pick an image), patch it, install the software, configure it and maintain it.
- Examples in Azure: Virtual Machines, managed disks, virtual networks.
- When to use it: fast migrations of existing systems, software that demands operating system control, legacy workloads.
- At Contoso: the legacy availability engine, which depends on a specific version of a library, will start its life in Azure as a virtual machine (module 2).
PaaS (Platform as a Service)
Azure gives you a platform ready to run your code or your data. You do not see the operating system and you do not patch anything: you upload the application and it works.
- Examples in Azure: App Service, Azure SQL Database, Azure Database for PostgreSQL, Azure Container Apps.
- When to use it: new or modernizable applications, when you want to spend the team's time on the product rather than on maintenance.
- At Contoso: the Contoso Bookings website and the Availability API will end up in App Service, and the booking database in Azure SQL Database (modules 2 and 3).
SaaS (Software as a Service)
You consume a finished application by subscription. There is nothing to deploy.
- Examples: Microsoft 365, Dynamics 365, GitHub. From the user's point of view, Azure DevOps too.
- At Contoso: corporate email is already Microsoft 365; there is no intention whatsoever of managing it.
A visual map
graph LR
subgraph Control["More control and more work"]
A[On-premises]
end
A --> B[IaaS<br/>Virtual Machines]
B --> C[PaaS<br/>App Service, Azure SQL]
C --> D[Serverless<br/>Functions, Logic Apps]
D --> E[SaaS<br/>Microsoft 365]
subgraph Management["Less work and less control"]
E
end
- Comparison: who manages what
This table is the reference for the rest of the course. It marks who takes care of each layer. C = customer, M = Microsoft.
| Layer | On-premises | IaaS | PaaS | SaaS |
|---|---|---|---|---|
| Data and its classification | C | C | C | C |
| Accounts, identities and access | C | C | C | C |
| Application configuration | C | C | C | M/C |
| Application code | C | C | C | M |
| Runtime and middleware | C | C | M | M |
| Operating system and patches | C | C | M | M |
| Virtualization | C | M | M | M |
| Physical servers | C | M | M | M |
| Physical storage | C | M | M | M |
| Physical network | C | M | M | M |
| Physical security of the building | C | M | M | M |
Look at the first two rows: data and identities are always the customer's responsibility, in every model. It is the most important idea in this lesson, and the reason module 4 exists.
- Serverless: the special case
Serverless is an unfortunate name: there are servers, but you do not see them, you do not size them and you do not pay when they are not in use. It is an evolution of PaaS with two distinctive traits:
- Automatic scaling down to zero. If nobody calls your function, there are no instances and there is no compute cost.
- Billing per execution. You pay for the number of invocations and the execution time consumed, not for an hour of server uptime.
| Aspect | Classic PaaS (App Service) | Serverless (Azure Functions on a consumption plan) |
|---|---|---|
| Deployment unit | Complete application | Individual function or workflow |
| Scaling | Automatic, but with minimum instances | Automatic, including down to zero |
| Billing | Per instance and reserved time | Per execution and consumption |
| First-start latency | Low and constant | There may be a cold start |
| Ideal for | Continuously running web applications | Event-driven, sporadic or highly variable tasks |
- Examples in Azure: Azure Functions, Logic Apps, Event Grid, Azure Container Apps with scale to zero.
- At Contoso: generating the boarding pass PDF after a booking is confirmed is a textbook case for a function; it happens in bursts and does not justify a server running 24 hours a day. It will be built in module 6.
- The shared responsibility model
This model answers the question every security manager asks in their first week: "if Microsoft is certified, what do I have to worry about?".
The general rule: Microsoft is responsible for the security of the cloud; the customer is responsible for security in the cloud.
graph TD
subgraph MS["Microsoft's responsibility"]
M1[Physical security of the data centers]
M2[Physical network and hypervisor]
M3[Patching of the managed platform]
M4[Availability according to the SLA]
end
subgraph CL["Customer's responsibility - always"]
C1[Data and its classification]
C2[Identities and permissions]
C3[Configuration of the services]
C4[Access devices]
end
subgraph VAR["Varies by model"]
V1[Operating system and patches: customer in IaaS, Microsoft in PaaS]
V2[Virtual network and firewall: customer in IaaS, shared in PaaS]
V3[Application code: customer except in SaaS]
end
Three concrete examples applied to Contoso, so that it does not stay abstract:
| Situation | Whose responsibility is it? | Why |
|---|---|---|
| A critical Linux kernel vulnerability is published and the availability engine VM is not patched | Contoso | It is IaaS: the operating system is managed by the customer |
| A physical disk fails in the West Europe data center | Microsoft | Physical infrastructure |
| The boarding pass storage account was left with anonymous public access and PDFs are leaked | Contoso | Service configuration and data classification |
| A version of PHP with a security flaw in App Service | Microsoft updates the platform; Contoso must move to a supported version | Maintenance is Microsoft's, but choosing a current version is the customer's |
| An employee who left still has access to the portal | Contoso | Identity management, always the customer's |
- Geographies, regions and region pairs
Azure organizes its physical presence into levels. From largest to smallest:
- Geography: an area of the world that groups regions together and that respects the data residency and compliance boundaries of that territory (for example, Europe). Data in a geography does not leave it unless you explicitly configure it to.
- Region: a set of data centers within a low-latency perimeter, with a commercial name (West Europe, North Europe, Spain Central). It is the unit you choose when creating a resource.
- Region pair: each region is paired with another in the same geography, usually more than 300 km away, with two useful properties:
- Some services replicate data automatically to the paired region (for example, geo-redundant storage, covered in module 2).
- In a widespread outage, Microsoft prioritizes the recovery of one region of the pair, and it schedules platform updates for the two in a staggered way, not simultaneously.
Examples of pairs in Europe: West Europe (Netherlands) ↔ North Europe (Ireland); France Central ↔ France South; Spain Central is paired within the same European geography.
Important note: Microsoft is also introducing non-paired regions backed by availability zones. Always check the current pair of the region you use in the official documentation, because the map keeps evolving.
- Availability zones and availability sets
This is where you decide which specific failure you are protecting yourself from. Each level covers a different kind of disaster and none replaces the others.
| Level | What it protects against | What it does NOT protect against | Added cost |
|---|---|---|---|
| Single instance with premium disks | Failure of a disk | Failure of the host, the rack or the data center | None |
| Availability set | Rack failure or planned host maintenance, within the same data center | An outage of the whole data center or of the region | None (design only) |
| Availability zones | Complete outage of a data center: fire, flood, power cut | An outage of the whole region or a logical error (accidental deletion) | Cost of inter-zone traffic and duplicated instances |
| Multi-region | A complete regional disaster | Errors in replicated data and human error | High: duplicated infrastructure |
| Backups | Human error, deletion, ransomware | Nothing on their own if the restore is never tested | Low (storage) |
Availability sets: fault domains and update domains
An availability set is an IaaS concept. When you place several virtual machines in one, Azure spreads them across:
- Fault domains: groups of servers that share power supply and network switch. Spreading across fault domains prevents a power failure from taking down all your VMs.
- Update domains: groups that Azure restarts separately during planned maintenance. It never restarts two domains at once.
Availability zones: real physical separation
An availability zone is one or more physically separated data centers within the same region, with independent power, cooling and networking, connected to each other by very-low-latency fiber. Enabled regions have at least three zones.
graph TD
subgraph WE["West Europe region"]
subgraph Z1["Zone 1"]
V1[Web instance 1]
end
subgraph Z2["Zone 2"]
V2[Web instance 2]
end
subgraph Z3["Zone 3"]
V3[Web instance 3]
end
end
LB[Zone-redundant load balancer] --> V1
LB --> V2
LB --> V3
Rule of thumb: availability set for legacy IaaS within a data center; availability zones when the region offers them and the service supports them; region pair for the big disaster.
- How to choose a region
There is no universal answer. You evaluate five criteria and document the decision.
| Criterion | Question you should ask yourself | How to check it |
|---|---|---|
| Latency | Where are my users and my on-premises systems? | Latency testing tools against Azure regions; rough rule: every 100 km adds ~1 ms |
| Data sovereignty and GDPR | Can I take personal data out of the EU? Are there sector-specific requirements? | European geography; Microsoft's data residency documentation |
| Service availability | Does the service I need exist in that region? | The official "Products available by region" page; new services launch in only a few regions |
| Price | How much does the same resource cost here and there? | Price varies by region: the same VM can cost considerably more in one region than in another. Covered in module 8 |
| Zones and region pair | Does it have availability zones? Which region is it paired with? | Region documentation |
On GDPR and sovereignty, three points that are often confused:
- Choosing a European region keeps data at rest within that geography, but certain metadata and global services (such as the Microsoft Entra ID directory itself) have their own scope. Look into it if your sector requires it.
- Geo-replication may move data to the paired region: check that the pair is also within the acceptable geography (in Europe, it is).
- The responsibility for classifying which data is personal and for applying encryption and retention is always the customer's, as we saw in section 4.
- SLAs and their relationship with redundancy
The SLA (service-level agreement) is the availability commitment Microsoft makes for a service, with financial compensation in the form of a credit if it is not met. Two nuances almost nobody explains:
- The credit does not cover your business loss. If Contoso stops selling tickets for three hours, the credit on the bill does not make up for the lost sales. The SLA is a quality signal, not insurance.
- The SLA depends on how you deploy. It is not a fixed number for the service: it improves if you add redundancy.
Indicative values for virtual machines (always check the current figures in the official SLA document, because they get updated):
| Configuration | Indicative committed availability | Approximate downtime per month |
|---|---|---|
| A single VM with premium SSD disks | 99.9% | ~43 minutes |
| Several VMs in an availability set | 99.95% | ~22 minutes |
| Several VMs spread across two or more availability zones | 99.99% | ~4 minutes |
And here is the point that surprises people most: when you compose services, availabilities multiply. If the website has 99.95%, the database 99.99% and the storage 99.9%, and a sale needs all three at once:
That is around 70 minutes a month in the worst case, worse than any of the individual pieces. That is why availability design is done over the complete user journey, not service by service.
- Contoso Airlines' decision
Marta Ríos documents the decision as follows, and we will inherit it throughout the course:
- Geography: Europe. Contoso sells to EU citizens and their personal data does not leave the European geography.
- Primary region: West Europe. Reasons: it has the most complete service catalog in the geography, it offers availability zones, and latency from Spain is a few tens of milliseconds, acceptable for sales.
- Secondary region: North Europe, which is its paired region. It will be used for geo-redundant backups and, later on, for disaster recovery (module 7).
- Within West Europe: the critical components (website and API) will be spread across at least two availability zones.
- What Contoso does NOT do: it does not deploy active-active across the two regions. That would be twice the cost and its recovery objective (a few hours) does not justify it. It is a conscious decision, not an oversight.
graph TD
subgraph EU["Geography: Europe"]
subgraph WE["West Europe - primary region"]
Z1[Zone 1: web + API]
Z2[Zone 2: web + API]
Z3[Zone 3: spare capacity]
DB[(Booking database)]
ST[Boarding pass storage]
end
subgraph NE["North Europe - paired region"]
BK[Geo-redundant backups]
DR[Recovery capacity<br/>only in case of disaster]
end
end
DB -.replication.-> BK
ST -.replication.-> BK
BK -.restore.-> DR
Common Mistakes and Tips
- Choosing a region out of habit or apparent proximity. "Since we are in Spain, I'll use the nearest region" is an incomplete criterion: it may not have the service you need, or it may have a different price. Evaluate all five criteria.
- Confusing availability zones with regions. Zones protect you against the loss of a building within the same region; they do not protect you from a regional disaster. And resources in one zone are not accessible as if they were in another region.
- Believing that PaaS removes all responsibility. In PaaS you are still responsible for data, identities, configuration and code. Only the operating system disappears.
- Thinking the SLA guarantees your availability. It only covers Microsoft's service, and only with the configuration you have deployed. A single-instance deployment does not get the SLA of a redundant deployment.
- Forgetting that replication is not a backup. If you delete a record by mistake, replication replicates the deletion. You need backups with retention (module 7).
- Mixing regions for no reason. Putting the application in one region and the database in another adds latency to every query and data egress cost. Keep the components that talk to each other a lot together.
- Cost tip: if you are just practicing, none of this costs anything yet because we have not created any resources. But remember that replicating across several zones multiplies the instances, and therefore the bill. Every availability level has a price; choose the one the business needs, not the highest one possible.
Exercises
Exercise 1: Assigning the service model
For each component of Contoso's platform, indicate which service model is the most appropriate (IaaS, PaaS, serverless or SaaS) and justify it in one sentence:
- The public Contoso Bookings website, rewritten as a modern application.
- The legacy availability engine, tied to a specific version of a system library.
- Generating the boarding pass PDF when a booking is confirmed.
- The staff's corporate email.
- The booking database, which needs automatic backups and hands-off patching.
Exercise 2: Shared responsibility
Classify each incident as Microsoft's or Contoso's responsibility, and explain why in one sentence:
- A brute-force attack gets in using the weak password of an administrative account without multifactor authentication.
- A cooling failure takes a data center in one West Europe zone out of service.
- The availability engine's virtual machine has gone eight months without operating system security updates.
- A failure in the underlying storage of Azure SQL Database causes 20 minutes of unavailability.
Exercise 3: Designing the availability level
Contoso wants ticket sales to survive these three scenarios, at the lowest possible cost in each case. State which mechanism you would use:
- Microsoft restarts the physical host running the VM during monthly maintenance.
- A fire takes the building housing one West Europe zone out of service.
- An operator accidentally deletes the whole booking table for the last month.
Also, calculate the composite availability of a purchase journey that goes through a load balancer (99.99%), the website (99.95%) and the database (99.99%).
Solutions
Solution 1:
| Component | Model | Justification |
|---|---|---|
| Contoso Bookings website | PaaS (App Service) | A continuously running web application; managing the operating system adds nothing |
| Legacy availability engine | IaaS (Virtual Machine) | It needs operating system control because of its dependencies; it is modernized later |
| PDF generation | Serverless (Azure Functions) | It happens on events and in bursts; it scales to zero and is paid per execution |
| Corporate email | SaaS (Microsoft 365) | A finished application; there is nothing to deploy |
| Booking database | PaaS (Azure SQL Database) | Managed backups and patching are required, without operating servers |
Solution 2:
- Contoso. Identities and their protection (MFA, password policies) are always the customer's, in any model.
- Microsoft. Physical data center infrastructure. That said, if Contoso deployed in a single zone, the consequence is indeed down to its own design.
- Contoso. It is IaaS: patching the guest operating system is the customer's job.
- Microsoft. It is PaaS and the failure is below the layer the customer manages; the service SLA applies.
Solution 3:
- Availability set (or, better still, zones if the service supports them): it spreads the VMs across different update domains so that maintenance does not restart them at the same time. Added cost: none beyond having more than one instance.
- Availability zones: instances spread across at least two West Europe zones, behind a zone-redundant load balancer.
- Backups with retention and point-in-time restore. Neither zone replication nor geo-replication helps here: they would replicate the deletion.
Composite availability:
Around 30 minutes of unavailability a month, worse than any of the three components on its own.
Conclusion
The service models describe how much responsibility you hand over: IaaS leaves you the operating system, PaaS takes it away, serverless also takes away the idle capacity, and SaaS hands you the finished application. Whatever the model, the shared responsibility model always leaves data, identities and configuration on your side: that is the sentence to remember from this lesson.
Physically, Azure is organized into geographies → regions → availability zones, with region pairs for the big disaster and availability sets for rack failures. Each level protects against a different type of failure, has its own cost and is reflected in the SLA, which also multiplies downwards when you compose services. Contoso Airlines has chosen West Europe as its primary region, North Europe as its pair, and a spread across several zones for its critical components.
With the "which model" and the "where" resolved, all that is left is the practical part: creating the account. In the next lesson, Creating and Setting Up Your Azure Account, we will look at what you need in order to sign up, what the free account includes, what subscription types exist and — very importantly — how to set a budget and a spending alert before creating your first resource.
Azure Course
Module 1: Introduction to Azure
- What Is Azure?
- Service Models, Regions and Availability Zones
- Creating and Setting Up Your Azure Account
- A Tour of the Azure Portal
- Azure Resource Manager: Subscriptions, Resource Groups and Tags
- Azure CLI, PowerShell and Cloud Shell
Module 2: Core Azure Services
- Azure Virtual Machines
- Compute Scaling and High Availability
- Azure App Service
- Azure Storage: Blobs, Files, Queues and Tables
- Azure Networking: Virtual Networks, Subnets and NSGs
- Hybrid Connectivity and Global Delivery
Module 3: Azure Databases
- Choosing the Right Data Service
- Azure SQL Database
- Azure Cosmos DB
- Azure Database for MySQL
- Azure Database for PostgreSQL
- Data Analytics: Data Lake, Data Factory and Synapse
Module 4: Security in Azure
- Microsoft Entra ID and Identity Management
- RBAC and Managed Identities
- Azure Key Vault
- DDoS Protection and Web Application Firewall
- Microsoft Defender for Cloud
- Governance and Compliance with Azure Policy
Module 5: Azure DevOps
- Introduction to Azure DevOps
- Azure Repos
- Azure Pipelines: Continuous Integration
- Continuous Deployment with Environments and Approvals
- Azure Artifacts
- Infrastructure as Code with Bicep
Module 6: Advanced Azure Services
- Containers in Azure: Container Registry and Container Apps
- Azure Kubernetes Service (AKS)
- Azure Functions
- Azure Logic Apps
- Messaging and Events: Service Bus, Event Grid and Event Hubs
- Azure AI Services
Module 7: Monitoring and Management
- Azure Monitor: Metrics, Alerts and Dashboards
- Log Analytics and KQL Queries
- Application Insights
- Azure Automation and Runbooks
- Backup and Disaster Recovery
Module 8: Cost Management and Optimization
- Pricing Calculator and Cost Estimation
- Azure Cost Management: Analysis, Budgets and Alerts
- Reservations, Savings Plans and Azure Hybrid Benefit
- Azure Advisor
- Optimization Strategies and FinOps Culture
