Infra Atlas · Decisions

App Service, Container Apps or a VM?

Azure's modern compute choice — the successor to 'web role vs worker role vs VM'.

Reviewed
The verdict

App Service is managed PaaS for web apps and APIs — deploy code, Microsoft runs the OS. Container Apps is serverless, Kubernetes-based PaaS for containerised microservices and event-driven jobs, with scale-to-zero. Virtual Machines is IaaS — full OS control, and the work that comes with it. The deciding factor is control against management: App Service for a code-first web app, Container Apps for containerised or event-driven microservices needing scale-to-zero, and VMs only when you genuinely need OS-level control or software no PaaS supports.

Head to head
CriterionApp ServiceContainer AppsVirtual Machines
Hosting modelManaged PaaSServerless PaaS, built on KubernetesIaaS — you provision and manage VMs
Deploy unitCode (.NET, Java, Node, Python, PHP) or a containerA container imageA VM / OS image
Scale to zeroNo — plan instances always runYes — most apps scale to zeroNo
AutoscalingBuilt-in autoscale rulesKEDA — HTTP traffic, events, CPU/memoryVirtual Machine Scale Sets
Pricing modelPer App Service plan instanceServerless consumption — vCPU / GiB-secondsHourly per VM size + OS
Control & OS accessPlatform manages the OS — no general accessAbstracted Kubernetes — no OS or K8s APIFull — patch and install anything
Best workloadsWeb apps, REST APIs, mobile back endsMicroservices, event-driven and background jobsAnything — lift-and-shift, HPC, SAP / Oracle
Ops burdenLowLowHigh
When to pick which

Pick App Service when

  • You have a web app, REST API or mobile back end in a supported language.
  • You want deployment slots, CI/CD and managed certificates without orchestration.
  • Traffic is steady and predictable — scale-to-zero is not required.

Pick Container Apps when

  • You run containerised microservices or event-driven jobs and want scale-to-zero.
  • You want KEDA autoscaling, Dapr, and revision-based blue/green.
  • You want Kubernetes patterns without managing a cluster or its API.

Pick Virtual Machines when

  • You need full OS control, or must run software no PaaS supports.
  • You are doing a like-for-like lift-and-shift of an existing workload.
  • You run specialty workloads — SAP, Oracle, HPC, or your own Kubernetes.
Sources
  1. Choose an Azure compute service — https://learn.microsoft.com/en-us/azure/architecture/guide/technology-choices/compute-decision-tree
  2. Azure App Service overview — https://learn.microsoft.com/en-us/azure/app-service/overview
  3. App Service plans and tiers — https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans
  4. Azure Container Apps overview — https://learn.microsoft.com/en-us/azure/container-apps/overview
  5. Azure Virtual Machines overview — https://learn.microsoft.com/en-us/azure/virtual-machines/overview
Related instruments