Azure Functions hosting plans — Consumption vs Premium vs App Service Plan
Picking the right hosting plan is the single biggest cost + performance decision for an Azure Functions app.
The four plans
| Plan | Scale to zero | Cold start | Max execution | Price model | VNet support |
|---|---|---|---|---|---|
| Consumption | ✅ yes | ~1-5 s (.NET) | 10 min default (5 min hard cap) | Per-execution + GB-s | No |
| Flex Consumption | ✅ yes | ~200 ms-1 s | 60 min | Per-execution + GB-s | Yes |
| Premium | ❌ min 1 instance | None (pre-warmed) | 60 min | Per vCPU-hour | Yes |
| App Service Plan | ❌ (shared with web apps) | None | Unlimited | Per VM-hour | Yes |
Consumption — the original serverless plan
What it is: true serverless, scale to zero, per-execution billing.
# host.json
{
"functionTimeout": "00:10:00" # max 10 min on this plan
}
Pros: zero cost when idle, fast initial scale-out, simplest. Cons: cold starts (1-5 s .NET), no VNet integration, 10-min cap, limited memory choices (1.5 GB max).
Best for: webhook receivers, low-traffic cron, internal automation.
Flex Consumption (newer, 2024+)
What it is: improved Consumption with always-ready instances option, VNet support, faster cold start.
Pros: scale to zero like Consumption + faster cold start + VNet + bigger memory (up to 4 GB) + 60-min execution. Cons: newer, fewer language SDKs, regional availability not universal yet.
Best for: most new Azure Functions projects in 2026. The default choice unless you have a specific reason otherwise.
Premium — no cold starts
What it is: at least 1 instance is always running (pre-warmed). Per vCPU-hour billing like App Service.
# Configured at the App Service Plan level
sku: EP1 # 1 vCPU, 3.5 GB RAM
minimumInstanceCount: 1
maximumElasticWorkerCount: 20
Pros: zero cold start (pre-warmed), VNet, unlimited memory, 60-min execution. Cons: pay for the minimum instance 24/7 (~₹8,000-15,000/month for EP1 in Mumbai). No scale-to-zero.
Best for: customer-facing functions where 1-5 s cold start is unacceptable, OR functions that need VNet integration, OR functions with predictable sustained load.
App Service Plan
What it is: Functions co-locate on an existing App Service Plan (the same VM that runs your Web API). Functions pay nothing extra — they use the App Service Plan's spare capacity.
Pros: ₹0 marginal cost if you already have App Service. Unlimited execution time. Full control. Cons: Functions compete with your Web API for CPU. No auto-scale specifically for Functions. If your Web App is small, Functions starve.
Best for: organizations already operating App Service; bolt-on automation; long-running batch jobs.
Decision flowchart
Cold start is unacceptable?
├── Yes → Premium
└── No → Workload is bursty / scale-to-zero matters?
├── Yes → Flex Consumption (preferred) / Consumption (legacy)
└── No → Already running App Service Plan?
├── Yes → App Service Plan
└── No → Flex Consumption
Real-world picks
| Scenario | Plan | Why |
|---|---|---|
| Stripe webhook receiver | Flex Consumption | Bursty, scale-to-zero, fine with 1s cold start |
| Customer-facing search API (5 RPS p95 500ms SLA) | Premium | Cannot accept cold start |
| Nightly report generator (runs once, takes 25 min) | App Service Plan | Exceeds Consumption timeout |
| File-upload virus scanner | Flex Consumption | Event-driven, bursty load |
| Internal Slack bot | Consumption | Very low traffic; free tier covers it |
| Service Bus order processor (constant 50 msg/sec) | Premium | Sustained load + cost effectiveness |
Cost comparison (rough Mumbai prices)
For 10M executions/month with 1 GB memory and 500 ms each:
| Plan | Monthly cost |
|---|---|
| Consumption | ~₹820 |
| Flex Consumption | ~₹900 |
| Premium EP1 | ~₹10,000 (mostly the always-on instance) |
| App Service Plan (shared) | ~₹0 marginal (if you already pay for the plan) |
For burst workloads, Consumption / Flex Consumption are obvious. For predictable sustained load, Premium or App Service Plan win.
Common interview follow-up
"We have a webhook that handles ~10k requests/day spread unevenly. Which plan?"
Flex Consumption. Reasons:
- Bursty (uneven distribution) — scale-to-zero saves cost
- 10K/day is well within free tier (~300/day average)
- Webhook source (Stripe, GitHub) tolerates 1-2s response
- Faster cold start than legacy Consumption
If the answer was "we get bursts of 500 webhooks in 5 seconds and 5s cold start is too slow", upgrade to Premium.