az appservice plan show --name <app-service-plan> --resource-group <resource-group> --query "{sku:sku.name,workers:numberOfWorkers,elasticScale:elasticScaleEnabled,maxElastic:maximumElasticWorkerCount}"Scale out
Scale out means adding more running instances of an App Service plan or app so traffic is spread across additional workers.
Source: Microsoft Learn - How to enable automatic scaling in Azure App Service Reviewed 2026-05-22
- Exam trap
- Scaling the App Service plan shared by several apps without noticing one downstream database cannot handle the new aggregate traffic.
- Production check
- Show the current plan SKU, worker count, elastic scale setting, and apps sharing the plan before changing capacity.
Article details and learning context
- Aliases
- horizontal scale, App Service scale out, automatic scaling, instance count, elastic scale
- Difficulty
- intermediate
- CLI mappings
- 5
- Last verified
- 2026-05-22
Understand the concept
In plain English
Scale out means increasing the number of running instances that serve the same application. In App Service, that usually means the App Service plan has more workers, and traffic can be distributed across them. It is different from scale up, which gives each worker more CPU or memory by changing the pricing tier. Scale-out is useful when an app is healthy but too busy for one or two instances. It does not fix bad code automatically, and it can expose weak session, cache, or database designs.
Why it matters
Scale-out matters because user demand is rarely flat. Product launches, enrollment deadlines, month-end reporting, ticket sales, and API bursts can overwhelm a small number of workers even when the application is otherwise healthy. Adding instances spreads traffic and reduces queueing, but it also increases cost and can amplify pressure on databases, caches, identity providers, and external APIs. Good scale-out design protects customer experience while respecting downstream limits. It also improves deployment safety because multiple instances give health checks, rolling restarts, and slot swaps more room to work without taking every user down. That balance separates useful elasticity from expensive uncontrolled growth.
Official wording and source
Microsoft Learn describes App Service automatic scaling as adding instances to an App Service plan based on incoming HTTP traffic. Engineers configure plan-level maximum burst, app-level always-ready instances, and scale limits so web apps can handle demand without manually defining metric rules.
Technical context
In Azure architecture, scale-out is a compute-capacity control at the App Service plan and sometimes app level. The plan owns worker capacity, SKU limits, zone behavior, and maximum burst settings, while individual web apps can have always-ready or maximum instance behavior in automatic scaling scenarios. Traffic reaches workers through the App Service front-end infrastructure. Operators connect scale-out decisions to metrics such as CPU, memory, request rate, HTTP queue length, response time, health-check failures, and downstream database capacity.
Exam context
Compare with
Where it is used
Where you see it
- In the App Service Scale out blade, operators see manual instance count, automatic scaling settings, maximum burst, always-ready instances, and related plan limitations. for capacity planning
- In Azure CLI output, appservice plan show or update reveals worker count, SKU, elastic scale settings, and maximum elastic worker configuration. during reviews before launch and incident reviews before release
- In Azure Monitor metrics, CPU, memory, requests, response time, and HTTP queue length show whether additional instances are reducing pressure. after capacity changes during incidents during load tests during readiness
- In deployment pipelines, scale-out commands often run before large launches or load tests, then scale-in commands restore cost controls afterward. with approvals recorded by approvers before scale-in automation during review
Common situations
- Absorb a scheduled traffic surge, such as ticket sales or enrollment, by increasing App Service workers before users arrive.
- Enable automatic scaling with a maximum burst that protects the web tier while preventing the database from being overwhelmed.
- Keep always-ready instances for critical apps so activation events do not cause cold user experiences during sudden HTTP spikes.
- Use per-app or app-level limits in high-density hosting so one noisy web app does not consume every plan instance.
- Improve deployment resilience by running enough healthy instances for health checks, rolling restarts, and slot swaps to work safely.
Illustrative Azure scenarios
These examples show how the concept can affect design and operations. They are illustrative scenarios, not customer claims.
Scenario 01 Civic ticketing portal survives a permit-release rush Scenario, objectives, solution, measured impact, and takeaway.
A city transportation department released a limited number of parking permits through an App Service portal. Previous releases overloaded two workers, causing long queues and angry calls before permits were even gone.
- Handle a predictable thirty-minute demand spike.
- Keep p95 page response under two seconds.
- Avoid permanent cost increase after the release window.
- Protect the payment gateway from excessive concurrent calls.
The Azure operations team load-tested the portal and found App Service CPU and HTTP queue length were the first bottlenecks, not the database. They scaled the App Service plan from two to eight workers one hour before release and set payment concurrency limits in the application. Azure CLI captured the starting worker count, applied the scale-out change, and exported CPU, memory, and response metrics every five minutes. Health check was enabled so unhealthy instances would be removed from rotation. A scheduled pipeline scaled the plan back to three workers after traffic normalized and saved the command output for review.
- Peak throughput increased 3.7 times over the prior release.
- p95 response time stayed at 1.6 seconds during the rush.
- Permit-related support calls fell by 58 percent.
- Scale-in occurred the same day, avoiding an estimated 4,200 dollars in idle monthly capacity.
Scale-out is most valuable when it is planned around a known demand event and paired with downstream safeguards.
Scenario 02 B2B logistics API stops morning queue buildup Scenario, objectives, solution, measured impact, and takeaway.
A B2B logistics API received heavy shipment updates from warehouses between 5:00 and 7:00 a.m. One instance stayed CPU-bound while message processors and customer dashboards fell behind.
- Reduce morning API queue length without changing the service tier.
- Keep database connection growth below the agreed limit.
- Automate capacity changes around warehouse operating hours.
- Prove whether scale-out, not code change, fixed the bottleneck.
The platform team confirmed through Azure Monitor that requests queued on App Service workers while database latency stayed stable. They moved the App Service plan to a scheduled scale pattern: six workers during warehouse intake, then two workers after the rush. Connection pool limits were adjusted so each worker could not exceed the database capacity plan. Azure CLI commands updated worker count from the release pipeline and exported metrics for queue length, CPU, dependency duration, and request count. A rollback command returned the plan to two workers if database latency crossed a defined threshold.
- Average morning HTTP queue length dropped 81 percent.
- Dashboard freshness improved from 19 minutes behind to under four minutes.
- Database connections stayed below 72 percent of the limit.
- Monthly App Service cost increased only 9 percent because scale-in was automatic.
Scale-out should be judged by the bottleneck it removes and the dependency pressure it creates, not by instance count alone.
Scenario 03 Online academy keeps enrollment open during deadline week Scenario, objectives, solution, measured impact, and takeaway.
An online academy saw enrollment traffic spike during the final week before classes started. The app had sticky sessions and local cache assumptions that broke when operators tried emergency scaling.
- Prepare the web app to run safely on multiple instances.
- Keep enrollment pages responsive during deadline week.
- Remove local-state assumptions before production scaling.
- Document capacity and rollback procedures for admissions staff.
The architecture team refactored session state into Azure Cache for Redis and moved uploaded documents to Blob Storage before enabling scale-out. Health check was configured on a lightweight readiness endpoint. In staging, CLI scaled the plan to four workers while load tests verified that users could move between instances without losing enrollment progress. Production scale-out happened two days before deadline week, with Azure Monitor tracking p95 latency, health-check failures, and cache dependency duration. The admissions runbook included the exact scale-in command, the expected instance count, and customer support language for capacity incidents.
- Enrollment completion rate improved from 86 percent to 97 percent.
- p95 page latency during deadline week fell from 5.8 seconds to 1.9 seconds.
- No session-loss tickets were reported after Redis migration.
- Admissions staff completed the next scale event without engineering escalation.
Scale-out exposes whether an app is truly multi-instance ready; fixing state first makes added workers useful instead of risky.
Azure CLI
After years of App Service operations, I use Azure CLI for scale-out because capacity changes need evidence and repeatability. The portal is fine for a single emergency click, but CLI lets me show the current worker count, change plan capacity, enable elastic scaling, set always-ready instances, and capture before-and-after output. During incidents, that matters. I can scale the right plan, not the wrong app, verify the resource group and region, and later replay the exact commands in automation. CLI also helps compare production, staging, and disaster-recovery environments for drift. It also makes emergency capacity changes safe to review afterward.
Useful for
- Inventory App Service plans and current worker counts before a launch so capacity changes happen on the correct plan.
- Increase worker count or enable elastic scale from a pipeline, then capture before-and-after metrics for the incident or event record.
- Set app-level always-ready instances where supported and verify the plan maximum burst does not exceed downstream capacity.
Before you run a command
- Confirm tenant, subscription, resource group, App Service plan, app name, slot, region, SKU, permissions, provider registration, and output format.
- Check cost risk, quota limits, zone requirements, database connection limits, cache capacity, and external API throttles before adding instances.
- Verify health check, startup time, session-state design, deployment slots, and rollback or scale-in plan before changing production capacity.
What the output tells you
- Plan output shows SKU, location, worker count, elastic-scale state, and maximum elastic workers, which define the scale-out ceiling.
- Web app output shows app-level minimum elastic instances or related settings that influence how a specific app uses plan capacity.
- Metric output shows whether added instances reduced CPU, memory, queue length, and p95 response time or merely shifted the bottleneck downstream.
Mapped commands
App Service scale-out commands
operationalaz appservice plan update --name <app-service-plan> --resource-group <resource-group> --number-of-workers <count>az appservice plan update --name <app-service-plan> --resource-group <resource-group> --elastic-scale true --max-elastic-worker-count <max-burst>az webapp update --resource-group <resource-group> --name <app-name> --minimum-elastic-instance-count <always-ready-count>az monitor metrics list --resource <app-service-plan-resource-id> --metric CpuPercentage,MemoryPercentage --interval PT5MArchitecture context
Architecturally, scale-out is where application design meets platform capacity. I expect a scalable App Service app to be stateless or deliberately stateful through external services such as Azure Cache for Redis, Storage, Service Bus, or a database. Session affinity, local file writes, singleton background jobs, and connection pool limits all become visible when the app runs on more instances. The plan SKU determines scale limits, automatic scaling support, and cost. Health check should remove bad instances, and downstream systems need capacity ceilings so more workers do not overwhelm them. For zone-resilient designs, instance count and regional architecture must be planned together.
- Security
- Security impact is indirect because adding instances does not change authentication policy, encryption, or RBAC by itself. The risk appears because every new worker runs the same code, reads the same secrets, opens outbound connections, and expands the places where misconfiguration can surface. Scale-out can also increase traffic to protected dependencies, triggering throttling or firewall surprises. Secure designs keep secrets in managed configuration or Key Vault references, use managed identity consistently, avoid instance-local security assumptions, and verify that access restrictions, private endpoints, TLS settings, and diagnostic logging apply to every scaled instance. Teams should verify that scaled workers inherit the same hardened configuration.
- Cost
- Scale-out has direct cost impact because additional App Service plan workers are billable capacity. Automatic scaling can add instances during traffic peaks, while manual worker counts can leave idle capacity running after the event. The cost decision must include SKU, maximum burst, always-ready minimums, deployment slots, zone requirements, and the operations effort saved by avoiding outages. More instances can also increase downstream costs through database connections, cache operations, storage transactions, and third-party API calls. FinOps owners should review scale schedules, peak windows, utilization, and scale-in automation after incidents or launches. Budgets should track planned peak capacity separately from accidental idle workers.
- Reliability
- Reliability impact is direct. More healthy instances can absorb load, survive individual worker failures, and make rolling restarts safer. Scale-out also reduces HTTP queue buildup when traffic rises faster than one instance can process. Reliability can get worse if the app depends on local state, has startup failures, exhausts database connections, or scales faster than dependencies. Reliable designs use health checks, warm-up paths, retry policies, connection limits, and maximum scale caps that protect back ends. Operators should test scale-out before peak events and define rollback or scale-in timing after traffic falls. Scale tests should include startup failures and dependency throttling scenarios.
- Performance
- Performance impact is direct when the bottleneck is concurrent request handling, CPU saturation, memory pressure, or queue length on App Service workers. Adding instances can reduce response time and improve throughput by distributing load. It will not help if the bottleneck is a slow database query, serialized lock, external API, or cold startup path. Scale-out can even hurt if each instance opens too many connections. Performance testing should compare p95 latency, HTTP queue length, CPU, memory, request rate, dependency duration, and connection counts before and after scaling. Capacity should be proven with load tests, not guessed. Otherwise scale-out only increases spend.
- Operations
- Operators handle scale-out by inspecting plan SKU, current worker count, elastic-scale settings, app-level minimum instances, metrics, health-check status, and cost impact. They change capacity through CLI, ARM, Bicep, pipelines, or autoscale configuration, then verify that all instances are healthy and receiving traffic. Troubleshooting includes checking whether the scale target is the plan or the app, whether the tier supports the desired setting, and whether deployment slots drift. Good operations practice captures before-and-after metrics, planned peak windows, owner approval, and downstream capacity checks. Runbooks should include planned capacity, owner approval, metric targets, scale-in timing, and affected apps sharing the plan.
Common mistakes
- Scaling the App Service plan shared by several apps without noticing one downstream database cannot handle the new aggregate traffic.
- Using scale-out to mask slow queries or thread starvation, then paying for more workers while latency remains high.
- Forgetting to scale in after a launch or load test, leaving idle workers running through the next billing cycle.