Azure functions are one of the serverless offerings from Azure where we can deploy some application logic which will be executed on a trigger.
Azure function application on consumption plan
There are many hosting options available, but hosting the function app with consumption plan is the way to go if there is no specific reason to do otherwise as this offers many benefits.
- This is fully serverless and highly scalable, can scale up to 200 instances
- You get free quota and charged for what you use (processing power and executions)
- Its charged pay as go, so it the best place to start So the consumption plan is great for many requirements, but when would we need to go for premium plan?
Azure function application on Premium plan
Premium plan is offered with rapid scalability and special features at premium cost. Here from truly serverless behavior in consumption plan you get choice on the VMs we run out application on. Even though this offers high performance it uses the same scale controller for scaling. We will go thorough some of these features as we discuss.
More power
First reason you need to move to premium plan is when your application need more power. Here there are three SKUs to select from. These configuration offers much better CPU and memory than consumption plan. You can check these metrics of your app plan and decide on what size you need to scale up.
Rapid scaling and no cold starts
With Always Ready instances your application will be ready to serve when ever event occurs. You can go up to 20 always ready instances per app. So your application handle even a sudden load without any delay. As these instances start processing events new pre-warmed instance will be spawned ready to scale when needed. But remember these going to cost you even they don't process any events. You can scale up to 100 instances in the same plan and you can configure the max instance count per plan and app.
Virtual Networks Integration
If your function app need VNet integration you need to go for premium applications it is not supported in consumption plan. This provide function application access to resources in the VNet. Inbound IP restriction is available even with consumption plan.
High number of executions
In premium plan you are not charged for executions. So your enterprise application that have high number of small executions will benefit from moving to premium plan. Try out your scenario with pricing calculator.
When your load have predictable component
When the load of your application consist of dynamic and predictable components you can go for premium and use savings plan to reduce your cost. In an enterprise environment savings plan would benefit you as it will apply to many compute resources, not to single premium plan.
Long running process
Premium plan provide much lengthier timeouts (30 minutes to unlimited) to opposing to what offered in consumption plan (5 mins - 10 minute).
Docker image support
If you need to run your application custom Linux image that mean you need to go for premium plan.
When have multiple function apps
If you are running multiple application in same plan you might benefit from premium plan as several app can run on same VM depending on app footprint and SKU.
Conclusion
Be mindful as some of these will depend on the application you deploy such as what type of trigger it act on, resource usage, workload it handles and premium plan configuration. I would suggest first to deploy the application on consumption plan, identify the load and how it changing. Make your move based on your observations.