Automate Azure App Service Plan Scaling with Automatic Scaling

Introducing the latest advancement in Azure's App Service Plans: Automatic Scaling (Preview). This awesome feature revolutionizes the scaling process by offering per-app scaling with ease.

Gone are the days of manually configuring auto-scale rules where we have to configure the auto-scale rules based on some kind of metrics (CPU, Memory, etc).

With Automatic Scaling, Azure intelligently manages resource allocation based on real-time application demands, ensuring optimal performance and cost efficiency, eliminating the need for manual intervention.

Say goodbye to the complexities of configuring auto-scale rules and hello to effortless scalability with Automatic Scaling.

Pre-requisites & Important Points

  1. Automatic Scaling is currently in Preview. It’s not yet recommended for Production usage.
  2. Only available for Premium App Service Plan with V2 and V3 only. (not available for Standard and below App Service Plans).
  3. The App Services must have an Always On set to be true.
  4. Only recommended for App Service but not for Function App. For Function Apps, it is recommended to use the Elastic Premium Plan.

Real-World Use Case

If you have used an App Service Plan in the past, you would know that the App Service Plan can host multiple App Services based on it pricing tier. Below is the recommendation from Microsoft Azure and it’s just a general guidance.

Real-World

Ref: https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans

For the purpose of illustration, imagine you've created two App Services within a single App Service Plan. To manage incoming traffic effectively, you've configured scaling, either manually or through auto-scaling, to increase the number of instances (Virtual Machines) from 1 to 3.

However, a significant challenge arises in this scenario: both App Services will be deployed across all three instances simultaneously. This setup lacks efficiency and coherence since each App Service should ideally operate independently rather than being spread across multiple instances unnecessarily.

To address this challenge, a hidden feature called per-app scaling was available, but it could only be configured using automation methods such as PowerShell or ARM Templates, not through the portal. This feature allowed for more granular control over scaling by enabling the scaling of individual applications within an App Service Plan. Read more about Per-App scaling here

Now, the Azure team has introduced an enhanced version of this feature, making it accessible directly from the portal, along with additional functionalities. Named "Automatic Scaling," this feature simplifies the process of scaling and offers more comprehensive capabilities. Let's delve into the details of this new feature, which is currently in preview.

App Service plan

As discussed already, the Automatic scaling is available in the Premium (V2 and V3) tiers only and is in Preview.

Let’s create an App Service Plan in the Premium V2 tier, as shown below.

Premium V2 tier

Once, the details of the App Service Plan are populated, click on Review + Create and then Create button to create the App Service Plan.

If you navigate to Scale Out from the App Service Plan and choose Automatic (Preview), you won’t see all the options as this new feature is configured for individual App Services.

Below is what the Automatic option would look like.

Automatic option

Let’s now create two App Services in the App Service Plan that you just created.

App Services

Navigate to the Scale-Out blade for the first App Service az-de-eus-wapp1 and select the Automatic in the Scale-out method as shown below.

Scale-Out

Let’s now understand each of the options.

  • Maximum Burst: In the auto-scale rules option, this was called Scale-Out instances. Maximum Burst is the number of instances that you can scale out to. This is a property at the App Service Plan level and is visible and configured at the App Service Plan. As per the above screenshot, we set this to 4.
  • Always ready instances: This is an App Service (also called a Web App) Level setting. As we have set the value of this setting to two the current App Service (az-dev-eus-wapp1) will be deployed ONLY in two instances.
  • Enforce scale-out limit: This is an App Service Level setting when enabled the Maximum scale limit slider is enabled.
  • Maximum Scale Limit: This is an App Service Level setting that defines the maximum number of instances that the current App Service can be deployed to.

Follow the same steps to the 2nd App Service based on the load and the traffic.

In summary, if your intention is to deploy each of your App Services to a specific number of instances, rather than across all scaled-out instances, you can utilize the "Always Ready Instances" and "Maximum Scale Limit" properties. These properties allow you to establish both the minimum and maximum instances, respectively, for your deployment.

Note. The Azure platform would decide automatically on which instances to choose for each of the App Services based on the configurations.

Summary

Automatic Scaling (Preview)" is the latest advancement in Azure's App Service Plans, offering per-app scaling with ease.

This feature eliminates the complexities of manually configuring auto-scale rules, allowing Azure to intelligently manage resource allocation based on real-time application demands.

However, it's important to note that Automatic Scaling is currently in preview and is only available for Premium App Service Plans (V2 and V3).

Additionally, App Services must have an "Always On" set to true for this feature to work effectively. While Automatic Scaling simplifies the scaling process, users should be aware of certain prerequisites and limitations outlined in the article.

Overall, it presents a significant improvement in scalability and resource management for Azure applications.