Azure Functions: which hosting plan?
Verdict: New serverless apps go on Flex Consumption. The legacy Consumption plan is Windows-only with a hard 10-minute cap. Dedicated needs Always On for an unbounded timeout. Premium exists for prewarmed workers and Hybrid Connections.
| Criterion | Flex Consumption | Consumption (legacy) | Premium | Dedicated (App Service plan) |
|---|---|---|---|---|
| OS | Linux only | Windows only (Linux retired) | Windows or Linux | Whatever the plan runs |
| Timeout | Plan default | Hard 10-minute maximum | Extended | Unbounded - but only with Always On enabled |
| Scale | Event-driven to 1,000 instances per app | Serverless scale | Prewarmed workers | Plan instance count |
| VNet integration | Yes | No | Yes | Yes |
| Cold start | Optional always-ready instances | Cold starts apply | Prewarmed | Always On keeps host warm |
| Apps per plan | One | Up to 100 | Up to 100 | Plan capacity |
Rules
- Choose Flex Consumption for new serverless apps: VNet integration, scale to 1,000 instances, always-ready instances, pay-as-you-go on Linux.
- Choose the Dedicated plan for unbounded execution - and enable Always On, or the host idles out.
- Recognise the legacy Consumption plan by its signature: Windows-only, hard 10-minute cap, kept for legacy runtime dependencies.
- Do NOT consolidate function apps onto one Flex Consumption plan: it allows exactly one app per plan; the 100-app figure belongs to Premium and legacy Consumption.
Traps
- host.json cannot buy an unbounded timeout on the Dedicated plan - Always On governs it, not functionTimeout.
- Candidates route VNet-integrated serverless to the legacy Consumption plan; it has no VNet integration at all.