Criteria for choosing an Azure compute service

The term compute refers to the hosting model for the computing resources that your applications runs on. The following tables compare Azure compute services across several axes. Refer to these tables when selecting a compute option for your application.

Hosting model

Criteria Virtual Machines App Service Service Fabric Azure Functions Azure Kubernetes Service Container Instances Azure Batch
Application composition Agnostic Applications, containers Services, guest executables, containers Functions Containers Containers Scheduled jobs
Density Agnostic Multiple apps per instance via app service plans Multiple services per VM Serverless 1 Multiple containers per node No dedicated instances Multiple apps per VM
Minimum number of nodes 1 2 1 5 3 Serverless 1 3 3 No dedicated nodes 1 4
State management Stateless or Stateful Stateless Stateless or stateful Stateless Stateless or Stateful Stateless Stateless
Web hosting Agnostic Built in Agnostic Not applicable Agnostic Agnostic No
Can be deployed to dedicated VNet? Supported Supported5 Supported Supported 5 Supported Not supported Supported
Hybrid connectivity Supported Supported 6 Supported Supported 7 Supported Not supported Supported

Notes

  1. If using Consumption plan. If using App Service plan, functions run on the VMs allocated for your App Service plan. See Choose the correct service plan for Azure Functions.
  2. Higher SLA with two or more instances.
  3. Recommended for production environments.
  4. Can scale down to zero after job completes.
  5. Requires App Service Environment (ASE).
  6. Use Azure App Service Hybrid Connections.
  7. Requires App Service plan.

DevOps

Criteria Virtual Machines App Service Service Fabric Azure Functions Azure Kubernetes Service Container Instances Azure Batch
Local debugging Agnostic IIS Express, others 1 Local node cluster Visual Studio or Azure Functions CLI Minikube, others Local container runtime Not supported
Programming model Agnostic Web and API applications, WebJobs for background tasks Guest executable, Service model, Actor model, Containers Functions with triggers Agnostic Agnostic Command line application
Application update No built-in support Deployment slots Rolling upgrade (per service) Deployment slots Rolling update Not applicable

Notes

  1. Options include IIS Express for ASP.NET or node.js (iisnode); PHP web server; Azure Toolkit for IntelliJ, Azure Toolkit for Eclipse. App Service also supports remote debugging of deployed web app.
  2. See Resource Manager providers, regions, API versions and schemas.

Scalability

Criteria Virtual Machines App Service Service Fabric Azure Functions Azure Kubernetes Service Container Instances Azure Batch
Auto-scaling VM scale sets Built-in service VM Scale Sets Built-in service Not supported Not supported N/A
Load balancer Azure Load Balancer Integrated Azure Load Balancer Integrated Integrated No built-in support Azure Load Balancer
Scale limit1 Platform image: 1000 nodes per VMSS, Custom image: 100 nodes per VMSS 20 instances, 100 with App Service Environment 100 nodes per VMSS 200 instances per Function app 100 nodes per cluster (default limit) 20 container groups per subscription (default limit). 20 core limit (default limit).

Notes

  1. See Azure subscription and service limits, quotas, and constraints.

Availability

Criteria Virtual Machines App Service Service Fabric Azure Functions Azure Kubernetes Service Container Instances Azure Batch
SLA SLA for Virtual Machines SLA for App Service SLA for Service Fabric SLA for Functions SLA for AKS SLA for Container Instances SLA for Azure Batch
Multi region failover Traffic manager Traffic manager Traffic manager, Multi-Region Cluster Not supported Traffic manager Not supported Not Supported

Other

Criteria Virtual Machines App Service Service Fabric Azure Functions Azure Kubernetes Service Container Instances Azure Batch
SSL Configured in VM Supported Supported Supported Ingress controller Use sidecar container Supported
Cost Windows, Linux App Service pricing Service Fabric pricing Azure Functions pricing AKS pricing Container Instances pricing Azure Batch pricing
Suitable architecture styles N-Tier, Big compute (HPC) Web-Queue-Worker, N-Tier Microservices, Event-driven architecture Microservices, Event-driven architecture Microservices, Event-driven architecture Microservices, task automation, batch jobs Big compute (HPC)