Teach
Azure compute services run your code and applications. Choosing the right one depends on how much control and management you want.
Core compute services
- Virtual Machines (VMs) — full IaaS control of the OS; best for lift-and-shift and custom configurations.
- Virtual Machine Scale Sets (VMSS) — a group of identical, load-balanced VMs that autoscale together for large workloads.
- App Service — PaaS for hosting web apps and APIs without managing servers; built-in scaling, deployment slots, and patching.
- Azure Kubernetes Service (AKS) — managed Kubernetes for orchestrating containers at scale.
Containers and serverless
- Azure Container Instances (ACI) — run a single container quickly with no orchestration overhead; great for short, isolated tasks.
- AKS — for complex, multi-container, production-scale orchestration.
- Azure Functions — serverless event-driven code that runs on demand and scales automatically; you pay only while it executes (consumption plan). Ideal for triggers, APIs, and glue logic.
A control-vs-management spectrum: VMs (most control) → containers (ACI/AKS) → App Service → Functions (least to manage).
Quick decision checkpoints
- Need full OS control or legacy app? Use VMs (or VMSS to scale them).
- Hosting a standard web app/API fast? Use App Service.
- Running containers? Use ACI for simple, AKS for orchestrated.
- Event-driven, pay-per-execution code? Use Azure Functions.
Pick the least management that still meets your control needs.
Practice
Practice 1
A company must migrate a legacy app requiring full control of the operating system. Which compute service fits best?
Practice 2
Which service hosts a web app or API as PaaS without you managing the underlying servers or OS patching?
Practice 3
You need a group of identical VMs that automatically scale out and in behind a load balancer. Use:
Practice 4
An event-driven task should run only when triggered and bill solely for execution time. Which service fits?
Practice 5
Which service is a managed platform for orchestrating containers at scale using Kubernetes?