Announced as a public preview back in April of 2019, the Azure Functions Premium plan is now generally available. This set of functionality is focused on scale, performance, and network connectivity for serverless functions. The Premium plan was released amongst a host of other Azure Functions updates meant to broaden the appeal of Microsoft's serverless computing platform.
The Premium plan adds a handful of new features to Azure Functions. First, this plan offers minimum and maximum instance configurations. Microsoft says that setting a max limit was a highly requested feature, and creates cost predictability, and prevents Azure Functions from overwhelming downstream resources. The concept of "minimum instances" may seem counter-intuitive to those who think of serverless computing always scaling to zero. However, Microsoft says this feature helps users who have predictable demand periods and want to keep a specified number of instances "always on." The "always on" piece comes from the new pre-warmed instances capability in the Premium plan. The user sets the pre-warmed instance count up to the minimum instances limit, and this keeps a buffer of instances ready for when scaling occurs. Microsoft pitches this as a solution to the "cold start" problem where scaling functions is traditionally slower because the platform must schedule, load, and start up a fresh instance.
In addition to scaling features, the Azure Functions Premium plan also added new connectivity options.
Azure Functions deployed to a Premium plan takes advantage of new VNet integration for web apps. When configured, your app can communicate with resources within your VNet or secured via service endpoints. IP restrictions are also available on the app to restrict incoming traffic.
By default, Azure Function instances can run for up to ten minutes. The Premium plan extends that so that a given execution can last for an unbounded period, with the default set to thirty minutes.
Until now, Azure Functions offered two usage plans: a Consumption plan—function instances are stood up to match demand, and you only pay when a function executes—and an App Service plan—run functions on virtual machines in use by other Azure App Service instances. The Consumption plan has been positioned as the primary one, and the Premium plan builds on that by offering these configurable instance sizes, private networking, scaling controls, and pre-warmed instances.
In the General Availability announcement, Microsoft pointed out what's changed in the Premium plan since the preview.
- Enhanced Regional Virtual Networking support, now with support for Hybrid Connections (learn more about our virtual networking support here)
- Longer maximum execution time – up to 60 minutes
- Higher scale out – up to 100 instances in select regions
- Deployment slots are now supported in this hosting plan
- Wider regional availability
- Support for Python and Linux OS hosting
The Premium plan is available in twenty five of Azure's fifty four global regions, with Windows runtime support in all twenty five, and Linux runtime support in just seven regions thus far. With regards to cost, it appears that pre-warmed instances are charged for their resource allocation, not just when the functions are invoked. The documentation is not entirely clear, and a GitHub issue spells out some of the confusion.
On top of launching the Premium plan, Microsoft shared a handful of other updates to Azure Functions. In a blog post coinciding with the Microsoft Ignite conference, principal PM manager Jeff Hollan outlined three new capabilities. First, Azure Functions now supports PowerShell, and users can "take advantage of the event-driven programming model for infrastructure management and scripting tasks across Azure and hybrid environments." Next, the serverless platform added integration with Azure Key Vault so that developers can link to a secret managed by Key Vault. Finally, Hollan shared that Azure Functions is adding integration with Azure Monitor logs, thus offering log aggregation for later querying and analysis.