App Service, Container Apps or a VM?
Azure's modern compute choice — the successor to 'web role vs worker role vs VM'.
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.
Answer the questions — the helper scores both the options against the sourced table below and shows its reasoning. A heuristic, not an oracle: the verdict above stays the authority.
| Criterion | App Service | Container Apps | Virtual Machines |
|---|---|---|---|
| Hosting model | Managed PaaS | Serverless PaaS, built on Kubernetes | IaaS — you provision and manage VMs |
| Deploy unit | Code (.NET, Java, Node, Python, PHP) or a container | A container image | A VM / OS image |
| Scale to zero | No — plan instances always run | Yes — most apps scale to zero | No |
| Autoscaling | Built-in autoscale rules | KEDA — HTTP traffic, events, CPU/memory | Virtual Machine Scale Sets |
| Pricing model | Per App Service plan instance | Serverless consumption — vCPU / GiB-seconds | Hourly per VM size + OS |
| Control & OS access | Platform manages the OS — no general access | Abstracted Kubernetes — no OS or K8s API | Full — patch and install anything |
| Best workloads | Web apps, REST APIs, mobile back ends | Microservices, event-driven and background jobs | Anything — lift-and-shift, HPC, SAP / Oracle |
| Ops burden | Low | Low | High |
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.
- Choose an Azure compute service — https://learn.microsoft.com/en-us/azure/architecture/guide/technology-choices/compute-decision-tree
- Azure App Service overview — https://learn.microsoft.com/en-us/azure/app-service/overview
- App Service plans and tiers — https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans
- Azure Container Apps overview — https://learn.microsoft.com/en-us/azure/container-apps/overview
- Azure Virtual Machines overview — https://learn.microsoft.com/en-us/azure/virtual-machines/overview