AZ-900 Describe Azure architecture and services Practice Question
A company needs to run a legacy application that requires full control over the operating system, including custom kernel modules. They also need to ensure high availability with multiple instances. Which Azure compute service should they use?
⚠ Common exam trap
Many candidates confuse Azure App Service or Container Instances as suitable for legacy apps, but those services lack the necessary OS-level access and kernel module support that only IaaS like Virtual Machines provides.
Answer choices
Why each option matters
Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.
Correct answer & explanation
✓
Azure Virtual Machines
Azure Virtual Machines (VMs) are the correct choice because they provide full control over the operating system, including the ability to install custom kernel modules, and support high availability through availability sets or zones. This is essential for legacy applications that require OS-level customization and fault-tolerant deployment.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
- ✗
Azure App Service
Why it's wrong here
Azure App Service is a platform-as-a-service (PaaS) offering for hosting web applications, REST APIs, and mobile backends. It automatically manages the underlying OS, patches, and infrastructure, giving you no remote desktop access or ability to customize the operating system kernel or install global software. While you can adjust application settings and use a sandboxed file system, you cannot run a legacy application that requires kernel-level privileges or persistent custom OS configuration, making it inappropriate for full control.
When this WOULD be correct
A company needs to deploy a web application or API with built-in auto-scaling and high availability, without managing the underlying OS. For example, running a Node.js or .NET Core web app with automatic patching.
- ✗
Azure Functions
Why it's wrong here
Azure Functions is a serverless compute service that executes event-driven code without requiring you to provision or manage any underlying virtual machines or operating systems. For a legacy application that needs full control over the OS, this service is unsuitable because it only supports specific runtime stacks (e.g., Node.js, .NET Core, Python) and enforces strict execution time and resource limits. You cannot install arbitrary dependencies, modify the host OS, or run long-lived processes, so the application's control requirements cannot be met.
When this WOULD be correct
A company needs to run event-driven code that scales automatically without managing infrastructure, such as processing messages from a queue or responding to HTTP triggers, and does not require OS-level control.
- ✓
Azure Virtual Machines
Why this is correct
Azure Virtual Machines provide infrastructure-as-a-service (IaaS) where you deploy a full guest operating system that you manage entirely. You have administrative access to the OS, can install custom software, configure kernel-level settings (if using Linux or Windows with appropriate access), and run legacy applications that depend on specific OS versions or low-level system calls. Additionally, you can use Availability Zones or Availability Sets to achieve high availability for the VM-based workload. This level of control is unmatched by PaaS or serverless offerings.
- ✗
Azure Container Instances
Why it's wrong here
Azure Container Instances (ACI) provides a fast and simple way to run containers in Azure without managing VMs, but it abstracts the underlying host OS entirely. Containers share the host OS kernel, and you cannot access or modify that kernel; you only manage the user-space processes defined in the container image. For a legacy application requiring full control over the OS, for instance, installing custom device drivers or changing sysctl parameters, ACI's kernel-sharing model and lack of host-level access are limiting, so it falls short of VM-level control.
When this WOULD be correct
A company needs to quickly deploy and run a containerized application without managing underlying servers, and requires per-second billing and fast startup times. The application does not need OS-level customization or high availability across multiple instances.
Option-by-option analysis
Why each answer is right or wrong
Understanding why wrong answers are wrong — and when they would be correct — is what separates a 750 score from a 900. The AZ-900 exam frequently reuses these exact scenarios with slightly different constraints.
✓Azure Virtual MachinesCorrect answer▾
Why this is correct
Azure Virtual Machines provide infrastructure-as-a-service (IaaS) where you deploy a full guest operating system that you manage entirely. You have administrative access to the OS, can install custom software, configure kernel-level settings (if using Linux or Windows with appropriate access), and run legacy applications that depend on specific OS versions or low-level system calls. Additionally, you can use Availability Zones or Availability Sets to achieve high availability for the VM-based workload. This level of control is unmatched by PaaS or serverless offerings.
✗Azure App ServiceWrong answer — click to see why▾
Why this is wrong here
Azure App Service does not provide full control over the operating system or allow custom kernel modules; it is a platform-as-a-service (PaaS) offering that abstracts the OS.
★ When this WOULD be the correct answer
A company needs to deploy a web application or API with built-in auto-scaling and high availability, without managing the underlying OS. For example, running a Node.js or .NET Core web app with automatic patching.
Why candidates choose this
Candidates may confuse PaaS services like App Service with IaaS, assuming they offer more control than they actually do, or they may overlook the requirement for custom kernel modules.
✗Azure FunctionsWrong answer — click to see why▾
Why this is wrong here
Azure Functions is a serverless compute service that does not provide full control over the operating system or support for custom kernel modules; it abstracts the OS and runs code in a managed environment.
★ When this WOULD be the correct answer
A company needs to run event-driven code that scales automatically without managing infrastructure, such as processing messages from a queue or responding to HTTP triggers, and does not require OS-level control.
Why candidates choose this
Candidates may confuse serverless computing with virtual machines, thinking that Azure Functions can handle any workload, or they may overlook the requirement for full OS control and custom kernel modules.
✗Azure Container InstancesWrong answer — click to see why▾
Why this is wrong here
Azure Container Instances does not provide full control over the operating system or support for custom kernel modules, as it runs containers on a shared host OS.
★ When this WOULD be the correct answer
A company needs to quickly deploy and run a containerized application without managing underlying servers, and requires per-second billing and fast startup times. The application does not need OS-level customization or high availability across multiple instances.
Why candidates choose this
Candidates may confuse containers with virtual machines, thinking containers also offer OS-level control, or they may focus on the 'multiple instances' requirement without realizing ACI lacks built-in high availability features like availability sets.
Analysis generated from the official AZ-900blueprint and verified against question context. The “when correct” sections are what AI assistants cite when candidates ask “what’s the difference between these options?”
Go deeper
Related to this question
Learn chapter
Azure Regions and Geographies
Key term
High availability
High availability is a system design approach that aims to keep applications and services operational and accessible with minimal downtime, even when some components fail.
Key term
Availability
Availability is the measure of how often a system or service is operational and accessible when needed, typically expressed as a percentage of uptime.
About these practice questions
Courseiva writes every AZ-900 question from scratch — 981 in total, each with an explanation and a wrong-answer breakdown. None are copied from real exams or dumps. Learn why practice questions differ from exam dumps →
JA
Written by Johnson Ajibi, MSc IT Security
Senior Network & Security Engineer · founder of Courseiva
This AZ-900 practice question is part of Courseiva's free Microsoft certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the AZ-900 exam.