Compare Compute Types: Virtual Machines, Containers, and Functions
Slide deck comparing Azure compute types: Virtual Machines, Containers, and Azure Functions, covering control levels, operational responsibility, scaling patterns, billing, and workload fit guidance.

Compare Compute Types
Introduction to comparing compute types in Azure: Virtual Machines, Containers, and Functions.
Compare Compute Types
Introduction to comparing compute types in Azure: Virtual Machines, Containers, and Functions.
What 'compute' means
Compute is where your application code runs. Different workloads need different trade-offs. More control vs. simpler operations. Always-on services vs. on-demand execution.
Three common compute models
VMs, Containers, and Functions differ mainly by control and responsibility. Virtual Machine (VM): server in the cloud. Containers: packaged app plus dependencies. Azure Functions: serverless, trigger-based code.
Virtual Machines (VMs)
A VM gives you a guest OS and full server-style control. Includes a guest Operating System (guest OS). You manage OS configuration and installed software. Patching/maintenance is often on you. Good for lift-and-shift workloads (IaaS).
Containers
Containers package the app, and typically share the host OS kernel. App plus dependencies in one package. Usually shares the host OS kernel. Consistent 'run the same everywhere'. Can run on Azure Container Instances (ACI).
Azure Functions
Functions run code on-demand when a trigger fires. Serverless: Azure manages infrastructure and runtime. Triggered by events (timer, message, HTTP request). Great for short, discrete tasks. Nothing runs between events.
Control level (high → low)
More control usually means more operational work. Highest control: Virtual Machines (VMs). Medium control: containers (packaging-focused). Lowest control: Azure Functions (serverless).
Operational responsibility
Responsibility shifts from you to Azure as you move toward serverless. VMs: you handle OS patching/maintenance. Containers: depends on hosting (you may still patch host OS). Functions: Azure manages more of the platform. Hosting choice changes your workload.
Scaling patterns
VMs scale by instances, containers by replicas, Functions by events. VMs: add/remove VM instances (more setup). Containers: scale out container instances quickly. Functions: scale with incoming events (plan/trigger dependent).
Billing (typical patterns)
Billing differs by compute type and service plan. VMs: provisioned capacity plus time (plus storage/network). Functions: executions/usage (consumption) or reserved capacity. Containers: often CPU plus memory over time (service dependent).
Workload fit: VM
If you need guest OS control, a VM is usually the best match. Legacy app needs specific OS version. Low-level configuration required. VM provides guest OS control. Containers aren't 'always better'.
Workload fit: containers
If the app is already containerized, containers are a natural fit. Container image exists already. Portability plus repeatable deployments. Scale out by adding instances of the same image. Hosting choice affects patching work.
Choosing quickly + pitfalls
Match the compute type to control needs and workload behavior. Event-driven, on-demand work → Azure Functions. Always-on services → VMs or long-running containers. Containers usually share the host OS kernel (not a full guest OS). Don't assume same billing or same patching responsibility.
