From 0616384053eb332c7d90622b378cd50785c322bc Mon Sep 17 00:00:00 2001 From: Rogerio Halicki Cordeiro Date: Mon, 27 Apr 2020 19:47:51 -0300 Subject: [PATCH 01/23] Create functions-hosting-comparison-table.md To try mitigating the complexity in choosing the hosting plan, I would like to propose some changes in the documentation. Include at the end of the technical article Azure Functions scale and hosting the comparison table. ------- cc: @ggailey777 --- .../functions-hosting-comparison-table.md | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 includes/functions-hosting-comparison-table.md diff --git a/includes/functions-hosting-comparison-table.md b/includes/functions-hosting-comparison-table.md new file mode 100644 index 0000000000000..f6bdfefbfe0b8 --- /dev/null +++ b/includes/functions-hosting-comparison-table.md @@ -0,0 +1,46 @@ +--- +author: rogeriohc +ms.service: cost-management-billing +ms.topic: include +ms.date: 04/27/2020 +ms.author: rogerioc +--- +| - | Resource | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | --- | +| **Short description** | | Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events. | While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan: | Run Functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations: |The Azure App Service Environment is an Azure App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. App Service environments (ASEs) are appropriate for application workloads that require: | Kubernetes (recommended in [AKS](../../aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require: | +| **Operating System by Runtime** |Linux - Code. Linux is the only supported Operating System for Python runtime stack. |.NET Core, Node.js, Java, Python. |.NET Core, Node.js, Java, Python. |.NET Core, Node.js, Java, Python. |.NET Core, Node.js, Java, Python. |n/a | +| | Windows - Code. Windows is the only supported Operating System for PowerShell runtime stack. |.NET Core, Node.js, Java, PowerShell Core. |.NET Core, Node.js, Java, PowerShell Core. |.NET Core, Node.js, Java, PowerShell Core. |.NET Core, Node.js, Java, PowerShell Core. |n/a | +| | Linux - Docker Container. Linux is the only supported Operating System for Docker Container runtime stack. |no support. |.NET Core, Node.js, Java, PowerShell Core, Python. |.NET Core, Node.js, Java, PowerShell Core, Python. |.NET Core, Node.js, Java, PowerShell Core, Python. |.NET Core, Node.js, Java, PowerShell Core, Python. | +| | Windows - Docker Container. |no support. |no support. |no support. |no support. |no support. | +| **Scale** | Scale out | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Manual/autoscale | Manual/autoscale | [KEDA](https://keda.sh) - Kubernetes-based event driven autoscale | +| | Max instances | 200 | 100 | 10-20 | 100| Depends on cluster | +| **Cold Start** | | Instead of starting from scratch every time, we’ve implemented a way to keep a pool of servers warm and draw workers from that pool. What this means is that at any point in time there are idle workers that have been preconfigured with the Functions runtime up and running. Making these “pre-warmed sites” happen has given us measurable  improvements on our cold start times. | Perpetually warm instances to avoid any cold start. | When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. |When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. | Depends on KEDA configuration. Apps can be configured to always run and never have cold start, or configured to scale to zero which would cause cold start on new events. | +| **Features limits** |Default [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |5 | 30 |302 | 30 | 30 | +| |Max [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |10 | unbounded8 | unbounded3 | unbounded | unbounded | +| | Max outbound connections (per instance) | 600 active (1200 total) | unbounded | unbounded | unbounded | unbounded | +| | Max request size (MB)4 | 100 | 100 | 100 | 100 | Depends on cluster | +| | Max query string length4 | 4096 | 4096 | 4096 | 4096 | Depends on cluster | +| | Max request URL length4 | 8192 | 8192 | 8192 | 8192 | Depends on cluster | +| | [ACU](../articles/virtual-machines/windows/acu.md) per instance | 100 | 210-840 | 100-840 |Workers are roles that host customer apps. Workers are available in three fixed sizes: One vCPU/3.5 GB RAM; Two vCPU/7 GB RAM; Four vCPU/14 GB RAM | [AKS pricing](https://azure.microsoft.com/pricing/details/container-service/) | +| | Max memory (GB per instance) | 1.5 | 3.5-14 | 1.75-14 | 3.5 - 14 | Any node is supported | +| | Function apps per plan |100 |100 |unbounded5 | unbounded | unbounded | +| | [App Service plans](../articles/app-service/overview-hosting-plans.md) | 100 per [region](https://azure.microsoft.com/global-infrastructure/regions/) |100 per resource group |100 per resource group | - | - | +| | Storage6 |1 GB |250 GB |50-1000 GB | 1 TB | n/a | +| | Custom domains per app |5007 |500 |500 | 500 | n/a | +| | Custom domain [SSL support](../articles/app-service/configure-ssl-bindings.md) |unbounded SNI SSL connection included | unbounded SNI SSL and 1 IP SSL connections included |unbounded SNI SSL and 1 IP SSL connections included | unbounded SNI SSL and 1 IP SSL connections included | n/a | +| **Advanced features limits** | Inbound IP restrictions & private site access |Yes |Yes |Yes | Yes | Yes | +| | Virtual network integration |No |Yes (Regional) |Yes (Regional and Gateway) | Yes | Yes | +| | Virtual network triggers (non-HTTP) |Yes |Yes |Yes | Yes | Yes | +| | Hybrid connections (Windows only) |No |Yes |Yes | Yes | Yes | +| | Outbound IP restrictions |No |No |Yes | Yes | Yes | +| | Regional virtual network integration |No |Yes |Yes | Yes | Yes | +| **Billing** | |Pay only when your functions are running. Billing is based on number of executions, execution time, and memory used. |More predictable pricing. Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. At least one instance must be warm at all times per plan. |You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps. | There is a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. In addition, there is a cost per App Service plan vCPU. All apps hosted in an ASE are in the Isolated pricing SKU. |User would be paying for AKS. Functions just run as an application workload on top of their cluster - potentially alongside other apps. | + +1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). +2 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded. +3 Requires the App Service plan be set to [Always On](../articles/azure-functions/functions-scale.md#always-on). Pay at standard [rates](https://azure.microsoft.com/pricing/details/app-service/). +4 These limits are [set in the host](https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/web.config). +5 The actual number of function apps that you can host depends on the activity of the apps, the size of the machine instances, and the corresponding resource utilization. +6 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. Consumption plan uses Azure Files for temporary storage. +7 When your function app is hosted in a [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan), only the CNAME option is supported. For function apps in a [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) or an [App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan), you can map a custom domain using either a CNAME or an A record. +8 Guaranteed for up to 60 minutes. From d15afd5dc3141c1c174ab43464b792bb150a9f27 Mon Sep 17 00:00:00 2001 From: Rogerio Halicki Cordeiro Date: Mon, 27 Apr 2020 19:48:56 -0300 Subject: [PATCH 02/23] Including hosting plan comparison table To try mitigating the complexity in choosing the hosting plan, I would like to propose some changes in the documentation. Include at the end of the technical article Azure Functions scale and hosting the comparison table. ------- cc: @ggailey777 --- articles/azure-functions/functions-scale.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index 609410b591994..2b0ff5331aa20 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -176,3 +176,11 @@ Useful queries and information on how to understand your consumption bill can be The following table indicates the limits that apply to function apps when running in the various hosting plans: [!INCLUDE [functions-limits](../../includes/functions-limits.md)] + +## Hosting plans comparison + +The following comparison table shows all important aspects to help the decision of Azure Functions App hosting plan choice: + +[!INCLUDE [functions-limits](../../includes/functions-hosting-comparison-table.md)] + + From 37e523a24eb3fbf5223d21c4d3eab415574b3265 Mon Sep 17 00:00:00 2001 From: Rogerio Halicki Cordeiro Date: Wed, 29 Apr 2020 21:19:49 -0300 Subject: [PATCH 03/23] Update includes/functions-hosting-comparison-table.md Co-Authored-By: Glenn Gailey --- .../functions-hosting-comparison-table.md | 89 +++++++++++++------ 1 file changed, 60 insertions(+), 29 deletions(-) diff --git a/includes/functions-hosting-comparison-table.md b/includes/functions-hosting-comparison-table.md index f6bdfefbfe0b8..292de48c80442 100644 --- a/includes/functions-hosting-comparison-table.md +++ b/includes/functions-hosting-comparison-table.md @@ -5,36 +5,67 @@ ms.topic: include ms.date: 04/27/2020 ms.author: rogerioc --- -| - | Resource | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | +### Plan summary + +| [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | --- | +| Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
  • Default hosting plan
  • Pay only when your functions are running.
  • Scale out automatically, even during periods of high load
| While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
  • Your function apps run continuously, or nearly continuously.
  • You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
  • You need more CPU or memory options than what is provided by the Consumption plan.
  • Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • You require features that are only avail [able on a Premium plan, such as virtual network connectivity.
| Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
  • You have existing, underutilized VMs that are already running other App Service instances.
  • You want to provide a custom image on which to run your functions.
|The Azure App Service Environment is an Azure App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. App Service environments (ASEs) are appropriate for application workloads that require:
  • Very high scale.
  • Isolation and secure network access.
  • High memory utilization.
| Kubernetes (recommended in [AKS](../../aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
  • Custom hardware requirements.
  • Isolation and secure network access.
  • Ability to run in hybrid or multi-cloud environment.
  • Run alongside existing Kubernetes applications and services.
| + +### Operating System/Runtime + +| - | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | --- | +|**Linux: code-only**
Linux is the only supported operating system for the Python runtime stack. |
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|n/a | +| **Windows: code-only**
Windows is the only supported operating system for the PowerShell runtime stack. |
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|n/a | +| **Linux: Docker container**
Linux is the only supported operating system for Docker containers. |No support. |
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
| +| **Windows: Docker container**. |No support. |No support. |No support. |No support. |No support. | + +### Scale +| | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | --- | +| Scale out | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Manual/autoscale | Manual/autoscale | [KEDA](https://keda.sh) - Kubernetes-based event driven autoscale | +| Max instances | 200 | 100 | 10-20 | 100| Depends on cluster | + +### Cold Start + +| [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | +| Instead of starting from scratch every time, we’ve implemented a way to keep a pool of servers warm and draw workers from that pool. What this means is that at any point in time there are idle workers that have been preconfigured with the Functions runtime up and running. Making these “pre-warmed sites” happen has given us measurable  improvements on our cold start times. | Perpetually warm instances to avoid any cold start. | When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. |When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. | Depends on KEDA configuration. Apps can be configured to always run and never have cold start, or configured to scale to zero which would cause cold start on new events. | + +### Features limits + +|Feature | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | --- | +|Default [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |5 | 30 |302 | 30 | 30 | +|Max [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |10 | unbounded8 | unbounded3 | unbounded | unbounded | +| Max outbound connections (per instance) | 600 active (1200 total) | unbounded | unbounded | unbounded | unbounded | +| Max request size (MB)4 | 100 | 100 | 100 | 100 | Depends on cluster | +| Max query string length4 | 4096 | 4096 | 4096 | 4096 | Depends on cluster | +| Max request URL length4 | 8192 | 8192 | 8192 | 8192 | Depends on cluster | +|[ACU](../articles/virtual-machines/windows/acu.md) per instance | 100 | 210-840 | 100-840 |Workers are roles that host customer apps. Workers are available in three fixed sizes: One vCPU/3.5 GB RAM; Two vCPU/7 GB RAM; Four vCPU/14 GB RAM | [AKS pricing](https://azure.microsoft.com/pricing/details/container-service/) | +| Max memory (GB per instance) | 1.5 | 3.5-14 | 1.75-14 | 3.5 - 14 | Any node is supported | +| Function apps per plan |100 |100 |unbounded5 | unbounded | unbounded | +| [App Service plans](../articles/app-service/overview-hosting-plans.md) | 100 per [region](https://azure.microsoft.com/global-infrastructure/regions/) |100 per resource group |100 per resource group | - | - | +| Storage6 |1 GB |250 GB |50-1000 GB | 1 TB | n/a | +| Custom domains per app |5007 |500 |500 | 500 | n/a | +| Custom domain [SSL support](../articles/app-service/configure-ssl-bindings.md) |unbounded SNI SSL connection included | unbounded SNI SSL and 1 IP SSL connections included |unbounded SNI SSL and 1 IP SSL connections included | unbounded SNI SSL and 1 IP SSL connections included | n/a | + +### Advanced features limits + +|Feature | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | --- | +| Inbound IP restrictions & private site access |Yes |Yes |Yes | Yes | Yes | +| Virtual network integration |No |Yes (Regional) |Yes (Regional and Gateway) | Yes | Yes | +| Virtual network triggers (non-HTTP) |Yes |Yes |Yes | Yes | Yes | +| Hybrid connections (Windows only) |No |Yes |Yes | Yes | Yes | +| Outbound IP restrictions |No |No |Yes | Yes | Yes | +| Regional virtual network integration |No |Yes |Yes | Yes | Yes | + +### Billing + +| [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | | --- | --- | --- | --- | --- | --- | --- | -| **Short description** | | Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
  • Default hosting plan
  • Pay only when your functions are running.
  • Scale out automatically, even during periods of high load
| While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
  • Your function apps run continuously, or nearly continuously.
  • You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
  • You need more CPU or memory options than what is provided by the Consumption plan.
  • Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • You require features that are only avail [able on a Premium plan, such as virtual network connectivity.
| Run Functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
  • You have existing, underutilized VMs that are already running other App Service instances.
  • You want to provide a custom image on which to run your functions.
|The Azure App Service Environment is an Azure App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. App Service environments (ASEs) are appropriate for application workloads that require:
  • Very high scale.
  • Isolation and secure network access.
  • High memory utilization.
| Kubernetes (recommended in [AKS](../../aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
  • Custom hardware requirements.
  • Isolation and secure network access.
  • Ability to run in hybrid or multi-cloud environment.
  • Run alongside existing Kubernetes applications and services.
| -| **Operating System by Runtime** |Linux - Code. Linux is the only supported Operating System for Python runtime stack. |.NET Core, Node.js, Java, Python. |.NET Core, Node.js, Java, Python. |.NET Core, Node.js, Java, Python. |.NET Core, Node.js, Java, Python. |n/a | -| | Windows - Code. Windows is the only supported Operating System for PowerShell runtime stack. |.NET Core, Node.js, Java, PowerShell Core. |.NET Core, Node.js, Java, PowerShell Core. |.NET Core, Node.js, Java, PowerShell Core. |.NET Core, Node.js, Java, PowerShell Core. |n/a | -| | Linux - Docker Container. Linux is the only supported Operating System for Docker Container runtime stack. |no support. |.NET Core, Node.js, Java, PowerShell Core, Python. |.NET Core, Node.js, Java, PowerShell Core, Python. |.NET Core, Node.js, Java, PowerShell Core, Python. |.NET Core, Node.js, Java, PowerShell Core, Python. | -| | Windows - Docker Container. |no support. |no support. |no support. |no support. |no support. | -| **Scale** | Scale out | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Manual/autoscale | Manual/autoscale | [KEDA](https://keda.sh) - Kubernetes-based event driven autoscale | -| | Max instances | 200 | 100 | 10-20 | 100| Depends on cluster | -| **Cold Start** | | Instead of starting from scratch every time, we’ve implemented a way to keep a pool of servers warm and draw workers from that pool. What this means is that at any point in time there are idle workers that have been preconfigured with the Functions runtime up and running. Making these “pre-warmed sites” happen has given us measurable  improvements on our cold start times. | Perpetually warm instances to avoid any cold start. | When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. |When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. | Depends on KEDA configuration. Apps can be configured to always run and never have cold start, or configured to scale to zero which would cause cold start on new events. | -| **Features limits** |Default [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |5 | 30 |302 | 30 | 30 | -| |Max [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |10 | unbounded8 | unbounded3 | unbounded | unbounded | -| | Max outbound connections (per instance) | 600 active (1200 total) | unbounded | unbounded | unbounded | unbounded | -| | Max request size (MB)4 | 100 | 100 | 100 | 100 | Depends on cluster | -| | Max query string length4 | 4096 | 4096 | 4096 | 4096 | Depends on cluster | -| | Max request URL length4 | 8192 | 8192 | 8192 | 8192 | Depends on cluster | -| | [ACU](../articles/virtual-machines/windows/acu.md) per instance | 100 | 210-840 | 100-840 |Workers are roles that host customer apps. Workers are available in three fixed sizes: One vCPU/3.5 GB RAM; Two vCPU/7 GB RAM; Four vCPU/14 GB RAM | [AKS pricing](https://azure.microsoft.com/pricing/details/container-service/) | -| | Max memory (GB per instance) | 1.5 | 3.5-14 | 1.75-14 | 3.5 - 14 | Any node is supported | -| | Function apps per plan |100 |100 |unbounded5 | unbounded | unbounded | -| | [App Service plans](../articles/app-service/overview-hosting-plans.md) | 100 per [region](https://azure.microsoft.com/global-infrastructure/regions/) |100 per resource group |100 per resource group | - | - | -| | Storage6 |1 GB |250 GB |50-1000 GB | 1 TB | n/a | -| | Custom domains per app |5007 |500 |500 | 500 | n/a | -| | Custom domain [SSL support](../articles/app-service/configure-ssl-bindings.md) |unbounded SNI SSL connection included | unbounded SNI SSL and 1 IP SSL connections included |unbounded SNI SSL and 1 IP SSL connections included | unbounded SNI SSL and 1 IP SSL connections included | n/a | -| **Advanced features limits** | Inbound IP restrictions & private site access |Yes |Yes |Yes | Yes | Yes | -| | Virtual network integration |No |Yes (Regional) |Yes (Regional and Gateway) | Yes | Yes | -| | Virtual network triggers (non-HTTP) |Yes |Yes |Yes | Yes | Yes | -| | Hybrid connections (Windows only) |No |Yes |Yes | Yes | Yes | -| | Outbound IP restrictions |No |No |Yes | Yes | Yes | -| | Regional virtual network integration |No |Yes |Yes | Yes | Yes | -| **Billing** | |Pay only when your functions are running. Billing is based on number of executions, execution time, and memory used. |More predictable pricing. Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. At least one instance must be warm at all times per plan. |You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps. | There is a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. In addition, there is a cost per App Service plan vCPU. All apps hosted in an ASE are in the Isolated pricing SKU. |User would be paying for AKS. Functions just run as an application workload on top of their cluster - potentially alongside other apps. | +|Pay only when your functions are running. Billing is based on number of executions, execution time, and memory used. |More predictable pricing. Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. At least one instance must be warm at all times per plan. |You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps. | There is a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. In addition, there is a cost per App Service plan vCPU. All apps hosted in an ASE are in the Isolated pricing SKU. |User would be paying for AKS. Functions just run as an application workload on top of their cluster - potentially alongside other apps. | 1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). 2 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded. From e0076f7743f001447e21072631fb02ad9f3f16fd Mon Sep 17 00:00:00 2001 From: Rogerio Halicki Cordeiro Date: Wed, 29 Apr 2020 21:45:10 -0300 Subject: [PATCH 04/23] Update functions-hosting-comparison-table.md --- .../functions-hosting-comparison-table.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/includes/functions-hosting-comparison-table.md b/includes/functions-hosting-comparison-table.md index 292de48c80442..2837611bfdbad 100644 --- a/includes/functions-hosting-comparison-table.md +++ b/includes/functions-hosting-comparison-table.md @@ -7,14 +7,14 @@ ms.author: rogerioc --- ### Plan summary -| [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | --- | -| Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
  • Default hosting plan
  • Pay only when your functions are running.
  • Scale out automatically, even during periods of high load
| While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
  • Your function apps run continuously, or nearly continuously.
  • You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
  • You need more CPU or memory options than what is provided by the Consumption plan.
  • Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • You require features that are only avail [able on a Premium plan, such as virtual network connectivity.
| Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
  • You have existing, underutilized VMs that are already running other App Service instances.
  • You want to provide a custom image on which to run your functions.
|The Azure App Service Environment is an Azure App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. App Service environments (ASEs) are appropriate for application workloads that require:
  • Very high scale.
  • Isolation and secure network access.
  • High memory utilization.
| Kubernetes (recommended in [AKS](../../aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
  • Custom hardware requirements.
  • Isolation and secure network access.
  • Ability to run in hybrid or multi-cloud environment.
  • Run alongside existing Kubernetes applications and services.
| +|[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1|[Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1|[Kubernetes](../articles/aks/quotas-skus-regions.md)| +| --- | --- | --- | --- | --- | +|Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
  • Default hosting plan
  • Pay only when your functions are running.
  • Scale out automatically, even during periods of high load
|While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
  • Your function apps run continuously, or nearly continuously.
  • You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
  • You need more CPU or memory options than what is provided by the Consumption plan.
  • Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • You require features that are only avail [able on a Premium plan, such as virtual network connectivity.
|Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
  • You have existing, underutilized VMs that are already running other App Service instances.
  • You want to provide a custom image on which to run your functions.
|The Azure App Service Environment is an Azure App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. App Service environments (ASEs) are appropriate for application workloads that require:
  • Very high scale.
  • Isolation and secure network access.
  • High memory utilization.
|Kubernetes (recommended in [AKS](../../aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
  • Custom hardware requirements.
  • Isolation and secure network access.
  • Ability to run in hybrid or multi-cloud environment.
  • Run alongside existing Kubernetes applications and services.
| ### Operating System/Runtime -| - | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | --- | +| | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | |**Linux: code-only**
Linux is the only supported operating system for the Python runtime stack. |
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|n/a | | **Windows: code-only**
Windows is the only supported operating system for the PowerShell runtime stack. |
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|n/a | | **Linux: Docker container**
Linux is the only supported operating system for Docker containers. |No support. |
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
| @@ -22,20 +22,20 @@ ms.author: rogerioc ### Scale | | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | --- | +| --- | --- | --- | --- | --- | --- | | Scale out | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Manual/autoscale | Manual/autoscale | [KEDA](https://keda.sh) - Kubernetes-based event driven autoscale | | Max instances | 200 | 100 | 10-20 | 100| Depends on cluster | ### Cold Start | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | +| --- | --- | --- | --- | --- | | Instead of starting from scratch every time, we’ve implemented a way to keep a pool of servers warm and draw workers from that pool. What this means is that at any point in time there are idle workers that have been preconfigured with the Functions runtime up and running. Making these “pre-warmed sites” happen has given us measurable  improvements on our cold start times. | Perpetually warm instances to avoid any cold start. | When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. |When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. | Depends on KEDA configuration. Apps can be configured to always run and never have cold start, or configured to scale to zero which would cause cold start on new events. | ### Features limits -|Feature | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | --- | +| Feature | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | |Default [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |5 | 30 |302 | 30 | 30 | |Max [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |10 | unbounded8 | unbounded3 | unbounded | unbounded | | Max outbound connections (per instance) | 600 active (1200 total) | unbounded | unbounded | unbounded | unbounded | @@ -52,8 +52,8 @@ ms.author: rogerioc ### Advanced features limits -|Feature | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | --- | +| Feature | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | | Inbound IP restrictions & private site access |Yes |Yes |Yes | Yes | Yes | | Virtual network integration |No |Yes (Regional) |Yes (Regional and Gateway) | Yes | Yes | | Virtual network triggers (non-HTTP) |Yes |Yes |Yes | Yes | Yes | @@ -64,7 +64,7 @@ ms.author: rogerioc ### Billing | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | --- | +| --- | --- | --- | --- | --- | |Pay only when your functions are running. Billing is based on number of executions, execution time, and memory used. |More predictable pricing. Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. At least one instance must be warm at all times per plan. |You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps. | There is a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. In addition, there is a cost per App Service plan vCPU. All apps hosted in an ASE are in the Isolated pricing SKU. |User would be paying for AKS. Functions just run as an application workload on top of their cluster - potentially alongside other apps. | 1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). From 42c5c198bf764730ec2ceb2c7e877764a7d4bb2d Mon Sep 17 00:00:00 2001 From: Rogerio Halicki Cordeiro Date: Thu, 30 Apr 2020 22:40:44 -0300 Subject: [PATCH 05/23] Update includes/functions-hosting-comparison-table.md Co-authored-by: Glenn Gailey --- includes/functions-hosting-comparison-table.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/functions-hosting-comparison-table.md b/includes/functions-hosting-comparison-table.md index 2837611bfdbad..4c25fad4b6be3 100644 --- a/includes/functions-hosting-comparison-table.md +++ b/includes/functions-hosting-comparison-table.md @@ -1,6 +1,6 @@ --- author: rogeriohc -ms.service: cost-management-billing +ms.service: azure-functions ms.topic: include ms.date: 04/27/2020 ms.author: rogerioc From 1921b9aeba7a44d2323fc4d467ffaaa79d37fc07 Mon Sep 17 00:00:00 2001 From: Rogerio Halicki Cordeiro Date: Thu, 30 Apr 2020 22:55:06 -0300 Subject: [PATCH 06/23] Adjusting AKS overview document url --- includes/functions-hosting-comparison-table.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/functions-hosting-comparison-table.md b/includes/functions-hosting-comparison-table.md index 4c25fad4b6be3..12f1a606c3ee1 100644 --- a/includes/functions-hosting-comparison-table.md +++ b/includes/functions-hosting-comparison-table.md @@ -9,7 +9,7 @@ ms.author: rogerioc |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1|[Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1|[Kubernetes](../articles/aks/quotas-skus-regions.md)| | --- | --- | --- | --- | --- | -|Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
  • Default hosting plan
  • Pay only when your functions are running.
  • Scale out automatically, even during periods of high load
|While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
  • Your function apps run continuously, or nearly continuously.
  • You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
  • You need more CPU or memory options than what is provided by the Consumption plan.
  • Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • You require features that are only avail [able on a Premium plan, such as virtual network connectivity.
|Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
  • You have existing, underutilized VMs that are already running other App Service instances.
  • You want to provide a custom image on which to run your functions.
|The Azure App Service Environment is an Azure App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. App Service environments (ASEs) are appropriate for application workloads that require:
  • Very high scale.
  • Isolation and secure network access.
  • High memory utilization.
|Kubernetes (recommended in [AKS](../../aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
  • Custom hardware requirements.
  • Isolation and secure network access.
  • Ability to run in hybrid or multi-cloud environment.
  • Run alongside existing Kubernetes applications and services.
| +|Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
  • Default hosting plan
  • Pay only when your functions are running.
  • Scale out automatically, even during periods of high load
|While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
  • Your function apps run continuously, or nearly continuously.
  • You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
  • You need more CPU or memory options than what is provided by the Consumption plan.
  • Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • You require features that are only avail [able on a Premium plan, such as virtual network connectivity.
|Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
  • You have existing, underutilized VMs that are already running other App Service instances.
  • You want to provide a custom image on which to run your functions.
|The Azure App Service Environment is an Azure App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. App Service environments (ASEs) are appropriate for application workloads that require:
  • Very high scale.
  • Isolation and secure network access.
  • High memory utilization.
|Kubernetes (recommended in [AKS](../articles/aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
  • Custom hardware requirements.
  • Isolation and secure network access.
  • Ability to run in hybrid or multi-cloud environment.
  • Run alongside existing Kubernetes applications and services.
| ### Operating System/Runtime From e39bcf4bc4857e24a20595f1c49ece59b16cb63b Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Mon, 4 May 2020 15:00:22 -0700 Subject: [PATCH 07/23] Move Rogerio's include inline --- articles/azure-functions/functions-scale.md | 77 +++++++++++++++++++-- includes/functions-limits.md | 33 --------- 2 files changed, 70 insertions(+), 40 deletions(-) delete mode 100644 includes/functions-limits.md diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index 2b0ff5331aa20..969b44330d323 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -171,16 +171,79 @@ Useful queries and information on how to understand your consumption bill can be [Azure Functions pricing page]: https://azure.microsoft.com/pricing/details/functions -## Service limits - -The following table indicates the limits that apply to function apps when running in the various hosting plans: - -[!INCLUDE [functions-limits](../../includes/functions-limits.md)] - ## Hosting plans comparison The following comparison table shows all important aspects to help the decision of Azure Functions App hosting plan choice: -[!INCLUDE [functions-limits](../../includes/functions-hosting-comparison-table.md)] +### Plan summary + +|[Consumption plan](#consumption-plan)|[Premium plan](#premium-plan)|[Dedicated (App Service) plan](#app-service-plan)1|[Isolated Service Plan (App Service Environment)](#app-service-plan)1|[Kubernetes](../aks/quotas-skus-regions.md)| +| --- | --- | --- | --- | --- | +|Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
  • Default hosting plan
  • Pay only when your functions are running.
  • Scale out automatically, even during periods of high load
|While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
  • Your function apps run continuously, or nearly continuously.
  • You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
  • You need more CPU or memory options than what is provided by the Consumption plan.
  • Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • You require features that are only avail [able on a Premium plan, such as virtual network connectivity.
|Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
  • You have existing, underutilized VMs that are already running other App Service instances.
  • You want to provide a custom image on which to run your functions.
|The Azure App Service Environment is an Azure App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. App Service environments (ASEs) are appropriate for application workloads that require:
  • Very high scale.
  • Isolation and secure network access.
  • High memory utilization.
|Kubernetes (recommended in [AKS](../aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
  • Custom hardware requirements.
  • Isolation and secure network access.
  • Ability to run in hybrid or multi-cloud environment.
  • Run alongside existing Kubernetes applications and services.
| + +### Operating System/Runtime + +| | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated (App Service) plan](#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | +|**Linux: code-only**
Linux is the only supported operating system for the Python runtime stack. |
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|n/a | +| **Windows: code-only**
Windows is the only supported operating system for the PowerShell runtime stack. |
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|n/a | +| **Linux: Docker container**
Linux is the only supported operating system for Docker containers. |No support. |
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
| +| **Windows: Docker container**. |No support. |No support. |No support. |No support. |No support. | + +### Scale +| | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated (App Service) plan](#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | +| Scale out | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Manual/autoscale | Manual/autoscale | [KEDA](https://keda.sh) - Kubernetes-based event driven autoscale | +| Max instances | 200 | 100 | 10-20 | 100| Depends on cluster | + +### Cold Start + +| [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated (App Service) plan](#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | +| Instead of starting from scratch every time, we’ve implemented a way to keep a pool of servers warm and draw workers from that pool. What this means is that at any point in time there are idle workers that have been preconfigured with the Functions runtime up and running. Making these “pre-warmed sites” happen has given us measurable  improvements on our cold start times. | Perpetually warm instances to avoid any cold start. | When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. |When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. | Depends on KEDA configuration. Apps can be configured to always run and never have cold start, or configured to scale to zero which would cause cold start on new events. | + +### Features limits + +| Feature | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated (App Service) plan](#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | +|Default [timeout duration](#timeout) (min) |5 | 30 |302 | 30 | 30 | +|Max [timeout duration](#timeout) (min) |10 | unbounded8 | unbounded3 | unbounded | unbounded | +| Max outbound connections (per instance) | 600 active (1200 total) | unbounded | unbounded | unbounded | unbounded | +| Max request size (MB)4 | 100 | 100 | 100 | 100 | Depends on cluster | +| Max query string length4 | 4096 | 4096 | 4096 | 4096 | Depends on cluster | +| Max request URL length4 | 8192 | 8192 | 8192 | 8192 | Depends on cluster | +|[ACU](../virtual-machines/windows/acu.md) per instance | 100 | 210-840 | 100-840 |Workers are roles that host customer apps. Workers are available in three fixed sizes: One vCPU/3.5 GB RAM; Two vCPU/7 GB RAM; Four vCPU/14 GB RAM | [AKS pricing](https://azure.microsoft.com/pricing/details/container-service/) | +| Max memory (GB per instance) | 1.5 | 3.5-14 | 1.75-14 | 3.5 - 14 | Any node is supported | +| Function apps per plan |100 |100 |unbounded5 | unbounded | unbounded | +| [App Service plans](../app-service/overview-hosting-plans.md) | 100 per [region](https://azure.microsoft.com/global-infrastructure/regions/) |100 per resource group |100 per resource group | - | - | +| Storage6 |1 GB |250 GB |50-1000 GB | 1 TB | n/a | +| Custom domains per app |5007 |500 |500 | 500 | n/a | +| Custom domain [SSL support](../app-service/configure-ssl-bindings.md) |unbounded SNI SSL connection included | unbounded SNI SSL and 1 IP SSL connections included |unbounded SNI SSL and 1 IP SSL connections included | unbounded SNI SSL and 1 IP SSL connections included | n/a | + +### Networking limits + +| Feature | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated (App Service) plan](#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | +| Inbound IP restrictions & private site access |Yes |Yes |Yes | Yes | Yes | +| Virtual network integration |No |Yes (Regional) |Yes (Regional and Gateway) | Yes | Yes | +| Virtual network triggers (non-HTTP) |Yes |Yes |Yes | Yes | Yes | +| Hybrid connections (Windows only) |No |Yes |Yes | Yes | Yes | +| Outbound IP restrictions |No |No |Yes | Yes | Yes | +| Regional virtual network integration |No |Yes |Yes | Yes | Yes | + +### Billing + +| [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated (App Service) plan](#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | +|Pay only when your functions are running. Billing is based on number of executions, execution time, and memory used. |More predictable pricing. Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. At least one instance must be warm at all times per plan. |You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps. | There is a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. In addition, there is a cost per App Service plan vCPU. All apps hosted in an ASE are in the Isolated pricing SKU. |User would be paying for AKS. Functions just run as an application workload on top of their cluster - potentially alongside other apps. | + +1 For specific limits for the various App Service plan options, see the [App Service plan limits](../azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). +2 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded. +3 Requires the App Service plan be set to [Always On](#always-on). Pay at standard [rates](https://azure.microsoft.com/pricing/details/app-service/). +4 These limits are [set in the host](https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/web.config). +5 The actual number of function apps that you can host depends on the activity of the apps, the size of the machine instances, and the corresponding resource utilization. +6 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. Consumption plan uses Azure Files for temporary storage. +7 When your function app is hosted in a [Consumption plan](#consumption-plan), only the CNAME option is supported. For function apps in a [Premium plan](#premium-plan) or an [App Service plan](#app-service-plan), you can map a custom domain using either a CNAME or an A record. +8 Guaranteed for up to 60 minutes. diff --git a/includes/functions-limits.md b/includes/functions-limits.md deleted file mode 100644 index cca8fa3c2fbea..0000000000000 --- a/includes/functions-limits.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -author: ggailey777 -ms.service: cost-management-billing -ms.topic: include -ms.date: 05/09/2019 -ms.author: glenga ---- -| Resource | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | -| --- | --- | --- | --- | -| Scale out | Event driven | Event driven | [Manual/autoscale](../articles/app-service/manage-scale-up.md) | -| Max instances | 200 | 100 | 10-20 | -|Default [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |5 | 30 |302 | -|Max [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |10 | unbounded8 | unbounded3 | -| Max outbound connections (per instance) | 600 active (1200 total) | unbounded | unbounded | -| Max request size (MB)4 | 100 | 100 | 100 | -| Max query string length4 | 4096 | 4096 | 4096 | -| Max request URL length4 | 8192 | 8192 | 8192 | -| [ACU](../articles/virtual-machines/windows/acu.md) per instance | 100 | 210-840 | 100-840 | -| Max memory (GB per instance) | 1.5 | 3.5-14 | 1.75-14 | -| Function apps per plan |100 |100 |unbounded5 | -| [App Service plans](../articles/app-service/overview-hosting-plans.md) | 100 per [region](https://azure.microsoft.com/global-infrastructure/regions/) |100 per resource group |100 per resource group | -| Storage6 |1 GB |250 GB |50-1000 GB | -| Custom domains per app |5007 |500 |500 | -| Custom domain [SSL support](../articles/app-service/configure-ssl-bindings.md) |unbounded SNI SSL connection included | unbounded SNI SSL and 1 IP SSL connections included |unbounded SNI SSL and 1 IP SSL connections included | - -1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). -2 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded. -3 Requires the App Service plan be set to [Always On](../articles/azure-functions/functions-scale.md#always-on). Pay at standard [rates](https://azure.microsoft.com/pricing/details/app-service/). -4 These limits are [set in the host](https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/web.config). -5 The actual number of function apps that you can host depends on the activity of the apps, the size of the machine instances, and the corresponding resource utilization. -6 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. Consumption plan uses Azure Files for temporary storage. -7 When your function app is hosted in a [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan), only the CNAME option is supported. For function apps in a [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) or an [App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan), you can map a custom domain using either a CNAME or an A record. -8 Guaranteed for up to 60 minutes. \ No newline at end of file From fc8bab98df3e8fef6cd58c18859c52e147e07b84 Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Mon, 4 May 2020 15:10:15 -0700 Subject: [PATCH 08/23] Change delete to the correct include --- articles/azure-functions/functions-scale.md | 2 +- .../functions-hosting-comparison-table.md | 77 ------------------- includes/functions-limits.md | 33 ++++++++ 3 files changed, 34 insertions(+), 78 deletions(-) delete mode 100644 includes/functions-hosting-comparison-table.md create mode 100644 includes/functions-limits.md diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index 969b44330d323..1c513ffe11c1b 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -202,7 +202,7 @@ The following comparison table shows all important aspects to help the decision | --- | --- | --- | --- | --- | | Instead of starting from scratch every time, we’ve implemented a way to keep a pool of servers warm and draw workers from that pool. What this means is that at any point in time there are idle workers that have been preconfigured with the Functions runtime up and running. Making these “pre-warmed sites” happen has given us measurable  improvements on our cold start times. | Perpetually warm instances to avoid any cold start. | When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. |When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. | Depends on KEDA configuration. Apps can be configured to always run and never have cold start, or configured to scale to zero which would cause cold start on new events. | -### Features limits +### Service limits | Feature | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated (App Service) plan](#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | | --- | --- | --- | --- | --- | --- | diff --git a/includes/functions-hosting-comparison-table.md b/includes/functions-hosting-comparison-table.md deleted file mode 100644 index 12f1a606c3ee1..0000000000000 --- a/includes/functions-hosting-comparison-table.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -author: rogeriohc -ms.service: azure-functions -ms.topic: include -ms.date: 04/27/2020 -ms.author: rogerioc ---- -### Plan summary - -|[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1|[Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1|[Kubernetes](../articles/aks/quotas-skus-regions.md)| -| --- | --- | --- | --- | --- | -|Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
  • Default hosting plan
  • Pay only when your functions are running.
  • Scale out automatically, even during periods of high load
|While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
  • Your function apps run continuously, or nearly continuously.
  • You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
  • You need more CPU or memory options than what is provided by the Consumption plan.
  • Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • You require features that are only avail [able on a Premium plan, such as virtual network connectivity.
|Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
  • You have existing, underutilized VMs that are already running other App Service instances.
  • You want to provide a custom image on which to run your functions.
|The Azure App Service Environment is an Azure App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. App Service environments (ASEs) are appropriate for application workloads that require:
  • Very high scale.
  • Isolation and secure network access.
  • High memory utilization.
|Kubernetes (recommended in [AKS](../articles/aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
  • Custom hardware requirements.
  • Isolation and secure network access.
  • Ability to run in hybrid or multi-cloud environment.
  • Run alongside existing Kubernetes applications and services.
| - -### Operating System/Runtime - -| | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | -|**Linux: code-only**
Linux is the only supported operating system for the Python runtime stack. |
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|n/a | -| **Windows: code-only**
Windows is the only supported operating system for the PowerShell runtime stack. |
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|n/a | -| **Linux: Docker container**
Linux is the only supported operating system for Docker containers. |No support. |
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
| -| **Windows: Docker container**. |No support. |No support. |No support. |No support. |No support. | - -### Scale -| | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | -| Scale out | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Manual/autoscale | Manual/autoscale | [KEDA](https://keda.sh) - Kubernetes-based event driven autoscale | -| Max instances | 200 | 100 | 10-20 | 100| Depends on cluster | - -### Cold Start - -| [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | -| Instead of starting from scratch every time, we’ve implemented a way to keep a pool of servers warm and draw workers from that pool. What this means is that at any point in time there are idle workers that have been preconfigured with the Functions runtime up and running. Making these “pre-warmed sites” happen has given us measurable  improvements on our cold start times. | Perpetually warm instances to avoid any cold start. | When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. |When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. | Depends on KEDA configuration. Apps can be configured to always run and never have cold start, or configured to scale to zero which would cause cold start on new events. | - -### Features limits - -| Feature | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | -|Default [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |5 | 30 |302 | 30 | 30 | -|Max [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |10 | unbounded8 | unbounded3 | unbounded | unbounded | -| Max outbound connections (per instance) | 600 active (1200 total) | unbounded | unbounded | unbounded | unbounded | -| Max request size (MB)4 | 100 | 100 | 100 | 100 | Depends on cluster | -| Max query string length4 | 4096 | 4096 | 4096 | 4096 | Depends on cluster | -| Max request URL length4 | 8192 | 8192 | 8192 | 8192 | Depends on cluster | -|[ACU](../articles/virtual-machines/windows/acu.md) per instance | 100 | 210-840 | 100-840 |Workers are roles that host customer apps. Workers are available in three fixed sizes: One vCPU/3.5 GB RAM; Two vCPU/7 GB RAM; Four vCPU/14 GB RAM | [AKS pricing](https://azure.microsoft.com/pricing/details/container-service/) | -| Max memory (GB per instance) | 1.5 | 3.5-14 | 1.75-14 | 3.5 - 14 | Any node is supported | -| Function apps per plan |100 |100 |unbounded5 | unbounded | unbounded | -| [App Service plans](../articles/app-service/overview-hosting-plans.md) | 100 per [region](https://azure.microsoft.com/global-infrastructure/regions/) |100 per resource group |100 per resource group | - | - | -| Storage6 |1 GB |250 GB |50-1000 GB | 1 TB | n/a | -| Custom domains per app |5007 |500 |500 | 500 | n/a | -| Custom domain [SSL support](../articles/app-service/configure-ssl-bindings.md) |unbounded SNI SSL connection included | unbounded SNI SSL and 1 IP SSL connections included |unbounded SNI SSL and 1 IP SSL connections included | unbounded SNI SSL and 1 IP SSL connections included | n/a | - -### Advanced features limits - -| Feature | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | -| Inbound IP restrictions & private site access |Yes |Yes |Yes | Yes | Yes | -| Virtual network integration |No |Yes (Regional) |Yes (Regional and Gateway) | Yes | Yes | -| Virtual network triggers (non-HTTP) |Yes |Yes |Yes | Yes | Yes | -| Hybrid connections (Windows only) |No |Yes |Yes | Yes | Yes | -| Outbound IP restrictions |No |No |Yes | Yes | Yes | -| Regional virtual network integration |No |Yes |Yes | Yes | Yes | - -### Billing - -| [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [Dedicated (App Service) plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](../articles/azure-functions/functions-scale.md#app-service-plan)1 | [Kubernetes](../articles/aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | -|Pay only when your functions are running. Billing is based on number of executions, execution time, and memory used. |More predictable pricing. Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. At least one instance must be warm at all times per plan. |You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps. | There is a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. In addition, there is a cost per App Service plan vCPU. All apps hosted in an ASE are in the Isolated pricing SKU. |User would be paying for AKS. Functions just run as an application workload on top of their cluster - potentially alongside other apps. | - -1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). -2 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded. -3 Requires the App Service plan be set to [Always On](../articles/azure-functions/functions-scale.md#always-on). Pay at standard [rates](https://azure.microsoft.com/pricing/details/app-service/). -4 These limits are [set in the host](https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/web.config). -5 The actual number of function apps that you can host depends on the activity of the apps, the size of the machine instances, and the corresponding resource utilization. -6 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. Consumption plan uses Azure Files for temporary storage. -7 When your function app is hosted in a [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan), only the CNAME option is supported. For function apps in a [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) or an [App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan), you can map a custom domain using either a CNAME or an A record. -8 Guaranteed for up to 60 minutes. diff --git a/includes/functions-limits.md b/includes/functions-limits.md new file mode 100644 index 0000000000000..cca8fa3c2fbea --- /dev/null +++ b/includes/functions-limits.md @@ -0,0 +1,33 @@ +--- +author: ggailey777 +ms.service: cost-management-billing +ms.topic: include +ms.date: 05/09/2019 +ms.author: glenga +--- +| Resource | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | +| --- | --- | --- | --- | +| Scale out | Event driven | Event driven | [Manual/autoscale](../articles/app-service/manage-scale-up.md) | +| Max instances | 200 | 100 | 10-20 | +|Default [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |5 | 30 |302 | +|Max [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |10 | unbounded8 | unbounded3 | +| Max outbound connections (per instance) | 600 active (1200 total) | unbounded | unbounded | +| Max request size (MB)4 | 100 | 100 | 100 | +| Max query string length4 | 4096 | 4096 | 4096 | +| Max request URL length4 | 8192 | 8192 | 8192 | +| [ACU](../articles/virtual-machines/windows/acu.md) per instance | 100 | 210-840 | 100-840 | +| Max memory (GB per instance) | 1.5 | 3.5-14 | 1.75-14 | +| Function apps per plan |100 |100 |unbounded5 | +| [App Service plans](../articles/app-service/overview-hosting-plans.md) | 100 per [region](https://azure.microsoft.com/global-infrastructure/regions/) |100 per resource group |100 per resource group | +| Storage6 |1 GB |250 GB |50-1000 GB | +| Custom domains per app |5007 |500 |500 | +| Custom domain [SSL support](../articles/app-service/configure-ssl-bindings.md) |unbounded SNI SSL connection included | unbounded SNI SSL and 1 IP SSL connections included |unbounded SNI SSL and 1 IP SSL connections included | + +1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). +2 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded. +3 Requires the App Service plan be set to [Always On](../articles/azure-functions/functions-scale.md#always-on). Pay at standard [rates](https://azure.microsoft.com/pricing/details/app-service/). +4 These limits are [set in the host](https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/web.config). +5 The actual number of function apps that you can host depends on the activity of the apps, the size of the machine instances, and the corresponding resource utilization. +6 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. Consumption plan uses Azure Files for temporary storage. +7 When your function app is hosted in a [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan), only the CNAME option is supported. For function apps in a [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) or an [App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan), you can map a custom domain using either a CNAME or an A record. +8 Guaranteed for up to 60 minutes. \ No newline at end of file From fb6702edd981deec3449e0ac1d7c6220fbc5c890 Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Mon, 4 May 2020 16:04:52 -0700 Subject: [PATCH 09/23] Shared networking include --- articles/azure-functions/functions-networking-options.md | 8 +------- articles/azure-functions/functions-scale.md | 9 +-------- includes/functions-networking-features.md | 9 +++++++++ 3 files changed, 11 insertions(+), 15 deletions(-) create mode 100644 includes/functions-networking-features.md diff --git a/articles/azure-functions/functions-networking-options.md b/articles/azure-functions/functions-networking-options.md index ae60e862306ff..bd19c6c53f18e 100644 --- a/articles/azure-functions/functions-networking-options.md +++ b/articles/azure-functions/functions-networking-options.md @@ -23,13 +23,7 @@ You can host function apps in a couple of ways: ## Matrix of networking features -| |[Consumption plan](functions-scale.md#consumption-plan)|[Premium plan](functions-scale.md#premium-plan)|[App Service plan](functions-scale.md#app-service-plan)|[App Service Environment](../app-service/environment/intro.md)| -|----------------|-----------|----------------|---------|-----------------------| -|[Inbound IP restrictions and private site access](#inbound-ip-restrictions)|✅Yes|✅Yes|✅Yes|✅Yes| -|[Virtual network integration](#virtual-network-integration)|❌No|✅Yes (Regional)|✅Yes (Regional and Gateway)|✅Yes| -|[Virtual network triggers (non-HTTP)](#virtual-network-triggers-non-http)|❌No| ✅Yes |✅Yes|✅Yes| -|[Hybrid connections](#hybrid-connections) (Windows only)|❌No|✅Yes|✅Yes|✅Yes| -|[Outbound IP restrictions](#outbound-ip-restrictions)|❌No| ✅Yes|✅Yes|✅Yes| +[!INCLUDE [functions-networking-features](../../includes/functions-networking-features.md)] ## Inbound IP restrictions diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index 1c513ffe11c1b..8c89133aa3044 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -222,14 +222,7 @@ The following comparison table shows all important aspects to help the decision ### Networking limits -| Feature | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated (App Service) plan](#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | -| Inbound IP restrictions & private site access |Yes |Yes |Yes | Yes | Yes | -| Virtual network integration |No |Yes (Regional) |Yes (Regional and Gateway) | Yes | Yes | -| Virtual network triggers (non-HTTP) |Yes |Yes |Yes | Yes | Yes | -| Hybrid connections (Windows only) |No |Yes |Yes | Yes | Yes | -| Outbound IP restrictions |No |No |Yes | Yes | Yes | -| Regional virtual network integration |No |Yes |Yes | Yes | Yes | +[!INCLUDE [functions-networking-features](../../includes/functions-networking-features.md)] ### Billing diff --git a/includes/functions-networking-features.md b/includes/functions-networking-features.md new file mode 100644 index 0000000000000..e46083c5812d6 --- /dev/null +++ b/includes/functions-networking-features.md @@ -0,0 +1,9 @@ + + +| Feature |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan)|[App Service Environment](../articles/app-service/environment/intro.md)| +|----------------|-----------|----------------|---------|-----------------------| +|[Inbound IP restrictions and private site access](../articles/azure-functions/functions-networking-options.md#inbound-ip-restrictions)|✅Yes|✅Yes|✅Yes|✅Yes| +|[Virtual network integration](../articles/azure-functions/functions-networking-options.md#virtual-network-integration)|❌No|✅Yes (Regional)|✅Yes (Regional and Gateway)|✅Yes| +|[Virtual network triggers (non-HTTP)](../articles/azure-functions/functions-networking-options.md#virtual-network-triggers-non-http)|❌No| ✅Yes |✅Yes|✅Yes| +|[Hybrid connections](../articles/azure-functions/functions-networking-options.md#hybrid-connections) (Windows only)|❌No|✅Yes|✅Yes|✅Yes| +|[Outbound IP restrictions](../articles/azure-functions/functions-networking-options.md#outbound-ip-restrictions)|❌No| ✅Yes|✅Yes|✅Yes| \ No newline at end of file From 1d7003a7749c970c9aa5d22dba256692224465c5 Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Mon, 4 May 2020 18:33:37 -0700 Subject: [PATCH 10/23] Make networking tabel into an include --- articles/azure-functions/functions-scale.md | 16 +++++++++------- includes/functions-networking-features.md | 14 +++++++------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index 8c89133aa3044..b277e3a70b8da 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -94,6 +94,8 @@ With an App Service plan, you can manually scale out by adding more VM instances When running JavaScript functions on an App Service plan, you should choose a plan that has fewer vCPUs. For more information, see [Choose single-core App Service plans](functions-reference-node.md#choose-single-vcpu-app-service-plans). +Running in an [App Service Environment](../app-service/environment/intro.md) (ASE) lets you fully isolate your functions and take advantage of very high scale. + ### Always On If you run on an App Service plan, you should enable the **Always on** setting so that your function app runs correctly. On an App Service plan, the functions runtime goes idle after a few minutes of inactivity, so only HTTP triggers will "wake up" your functions. Always on is available only on an App Service plan. On a Consumption plan, the platform activates function apps automatically. @@ -177,13 +179,13 @@ The following comparison table shows all important aspects to help the decision ### Plan summary -|[Consumption plan](#consumption-plan)|[Premium plan](#premium-plan)|[Dedicated (App Service) plan](#app-service-plan)1|[Isolated Service Plan (App Service Environment)](#app-service-plan)1|[Kubernetes](../aks/quotas-skus-regions.md)| +|[Consumption plan](#consumption-plan)|[Premium plan](#premium-plan)|[Dedicated plan](#app-service-plan)1|[ASE](#app-service-plan)1|[Kubernetes](../aks/quotas-skus-regions.md)| | --- | --- | --- | --- | --- | -|Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
  • Default hosting plan
  • Pay only when your functions are running.
  • Scale out automatically, even during periods of high load
|While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
  • Your function apps run continuously, or nearly continuously.
  • You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
  • You need more CPU or memory options than what is provided by the Consumption plan.
  • Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • You require features that are only avail [able on a Premium plan, such as virtual network connectivity.
|Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
  • You have existing, underutilized VMs that are already running other App Service instances.
  • You want to provide a custom image on which to run your functions.
|The Azure App Service Environment is an Azure App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. App Service environments (ASEs) are appropriate for application workloads that require:
  • Very high scale.
  • Isolation and secure network access.
  • High memory utilization.
|Kubernetes (recommended in [AKS](../aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
  • Custom hardware requirements.
  • Isolation and secure network access.
  • Ability to run in hybrid or multi-cloud environment.
  • Run alongside existing Kubernetes applications and services.
| +|Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
  • Default hosting plan
  • Pay only when your functions are running.
  • Scale out automatically, even during periods of high load
|While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
  • Your function apps run continuously, or nearly continuously.
  • You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
  • You need more CPU or memory options than what is provided by the Consumption plan.
  • Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • You require features that are only avail [able on a Premium plan, such as virtual network connectivity.
|Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
  • You have existing, underutilized VMs that are already running other App Service instances.
  • You want to provide a custom image on which to run your functions.
|App Service Environment (ASE) is an App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. ASEs are appropriate for application workloads that require:
  • Very high scale.
  • Isolation and secure network access.
  • High memory utilization.
|Kubernetes (recommended in [AKS](../aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
  • Custom hardware requirements.
  • Isolation and secure network access.
  • Ability to run in hybrid or multi-cloud environment.
  • Run alongside existing Kubernetes applications and services.
| ### Operating System/Runtime -| | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated (App Service) plan](#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | +| | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated plan](#app-service-plan)1 | [ASE](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | | --- | --- | --- | --- | --- | --- | |**Linux: code-only**
Linux is the only supported operating system for the Python runtime stack. |
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|n/a | | **Windows: code-only**
Windows is the only supported operating system for the PowerShell runtime stack. |
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|n/a | @@ -191,20 +193,20 @@ The following comparison table shows all important aspects to help the decision | **Windows: Docker container**. |No support. |No support. |No support. |No support. |No support. | ### Scale -| | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated (App Service) plan](#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | +| | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated plan](#app-service-plan)1 | [ASE](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | | --- | --- | --- | --- | --- | --- | | Scale out | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Manual/autoscale | Manual/autoscale | [KEDA](https://keda.sh) - Kubernetes-based event driven autoscale | | Max instances | 200 | 100 | 10-20 | 100| Depends on cluster | ### Cold Start -| [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated (App Service) plan](#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | +| [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated plan](#app-service-plan)1 | [ASE](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | | --- | --- | --- | --- | --- | | Instead of starting from scratch every time, we’ve implemented a way to keep a pool of servers warm and draw workers from that pool. What this means is that at any point in time there are idle workers that have been preconfigured with the Functions runtime up and running. Making these “pre-warmed sites” happen has given us measurable  improvements on our cold start times. | Perpetually warm instances to avoid any cold start. | When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. |When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. | Depends on KEDA configuration. Apps can be configured to always run and never have cold start, or configured to scale to zero which would cause cold start on new events. | ### Service limits -| Feature | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated (App Service) plan](#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | +| Feature | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated plan](#app-service-plan)1 | [ASE](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | | --- | --- | --- | --- | --- | --- | |Default [timeout duration](#timeout) (min) |5 | 30 |302 | 30 | 30 | |Max [timeout duration](#timeout) (min) |10 | unbounded8 | unbounded3 | unbounded | unbounded | @@ -226,7 +228,7 @@ The following comparison table shows all important aspects to help the decision ### Billing -| [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated (App Service) plan](#app-service-plan)1 | [Isolated Service Plan (App Service Environment)](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | +| [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated plan](#app-service-plan)1 | [ASE](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | | --- | --- | --- | --- | --- | |Pay only when your functions are running. Billing is based on number of executions, execution time, and memory used. |More predictable pricing. Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. At least one instance must be warm at all times per plan. |You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps. | There is a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. In addition, there is a cost per App Service plan vCPU. All apps hosted in an ASE are in the Isolated pricing SKU. |User would be paying for AKS. Functions just run as an application workload on top of their cluster - potentially alongside other apps. | diff --git a/includes/functions-networking-features.md b/includes/functions-networking-features.md index e46083c5812d6..74d3ed5f3fa05 100644 --- a/includes/functions-networking-features.md +++ b/includes/functions-networking-features.md @@ -1,9 +1,9 @@ -| Feature |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan)|[App Service Environment](../articles/app-service/environment/intro.md)| -|----------------|-----------|----------------|---------|-----------------------| -|[Inbound IP restrictions and private site access](../articles/azure-functions/functions-networking-options.md#inbound-ip-restrictions)|✅Yes|✅Yes|✅Yes|✅Yes| -|[Virtual network integration](../articles/azure-functions/functions-networking-options.md#virtual-network-integration)|❌No|✅Yes (Regional)|✅Yes (Regional and Gateway)|✅Yes| -|[Virtual network triggers (non-HTTP)](../articles/azure-functions/functions-networking-options.md#virtual-network-triggers-non-http)|❌No| ✅Yes |✅Yes|✅Yes| -|[Hybrid connections](../articles/azure-functions/functions-networking-options.md#hybrid-connections) (Windows only)|❌No|✅Yes|✅Yes|✅Yes| -|[Outbound IP restrictions](../articles/azure-functions/functions-networking-options.md#outbound-ip-restrictions)|❌No| ✅Yes|✅Yes|✅Yes| \ No newline at end of file +| Feature |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated plan](../articles/azure-functions/functions-scale.md#app-service-plan)|[ASE](../articles/app-service/environment/intro.md)| [Kubernetes](../aks/quotas-skus-regions.md) | +|----------------|-----------|----------------|---------|-----------------------| ---| +|[Inbound IP restrictions and private site access](../articles/azure-functions/functions-networking-options.md#inbound-ip-restrictions)|✅Yes|✅Yes|✅Yes|✅Yes|✅Yes| +|[Virtual network integration](../articles/azure-functions/functions-networking-options.md#virtual-network-integration)|❌No|✅Yes (Regional)|✅Yes (Regional and Gateway)|✅Yes| ✅Yes| +|[Virtual network triggers (non-HTTP)](../articles/azure-functions/functions-networking-options.md#virtual-network-triggers-non-http)|❌No| ✅Yes |✅Yes|✅Yes|✅Yes| +|[Hybrid connections](../articles/azure-functions/functions-networking-options.md#hybrid-connections) (Windows only)|❌No|✅Yes|✅Yes|✅Yes|✅Yes| +|[Outbound IP restrictions](../articles/azure-functions/functions-networking-options.md#outbound-ip-restrictions)|❌No| ✅Yes|✅Yes|✅Yes|✅Yes| \ No newline at end of file From 0fc236d292129e5a5d4df4f99c50f6e5515fa803 Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Mon, 4 May 2020 18:41:09 -0700 Subject: [PATCH 11/23] link fix --- articles/azure-functions/functions-scale.md | 2 +- includes/functions-networking-features.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index b277e3a70b8da..ac0f866c6be68 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -222,7 +222,7 @@ The following comparison table shows all important aspects to help the decision | Custom domains per app |5007 |500 |500 | 500 | n/a | | Custom domain [SSL support](../app-service/configure-ssl-bindings.md) |unbounded SNI SSL connection included | unbounded SNI SSL and 1 IP SSL connections included |unbounded SNI SSL and 1 IP SSL connections included | unbounded SNI SSL and 1 IP SSL connections included | n/a | -### Networking limits +### Networking features [!INCLUDE [functions-networking-features](../../includes/functions-networking-features.md)] diff --git a/includes/functions-networking-features.md b/includes/functions-networking-features.md index 74d3ed5f3fa05..8358b5ccf3279 100644 --- a/includes/functions-networking-features.md +++ b/includes/functions-networking-features.md @@ -1,6 +1,6 @@ -| Feature |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated plan](../articles/azure-functions/functions-scale.md#app-service-plan)|[ASE](../articles/app-service/environment/intro.md)| [Kubernetes](../aks/quotas-skus-regions.md) | +| Feature |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated plan](../articles/azure-functions/functions-scale.md#app-service-plan)|[ASE](../articles/app-service/environment/intro.md)| [Kubernetes](.../articles/aks/quotas-skus-regions.md) | |----------------|-----------|----------------|---------|-----------------------| ---| |[Inbound IP restrictions and private site access](../articles/azure-functions/functions-networking-options.md#inbound-ip-restrictions)|✅Yes|✅Yes|✅Yes|✅Yes|✅Yes| |[Virtual network integration](../articles/azure-functions/functions-networking-options.md#virtual-network-integration)|❌No|✅Yes (Regional)|✅Yes (Regional and Gateway)|✅Yes| ✅Yes| From 6e56b242445d02bbee6e207eb8d6eb203b18d4dd Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Mon, 4 May 2020 19:01:24 -0700 Subject: [PATCH 12/23] Reuse includes with the limits article --- articles/azure-functions/functions-scale.md | 29 +++--------- .../azure-subscription-service-limits.md | 4 ++ includes/functions-limits-notes.md | 15 +++++++ includes/functions-limits.md | 44 +++++++------------ 4 files changed, 42 insertions(+), 50 deletions(-) create mode 100644 includes/functions-limits-notes.md diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index ac0f866c6be68..3c5bda461ab3f 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -206,21 +206,7 @@ The following comparison table shows all important aspects to help the decision ### Service limits -| Feature | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated plan](#app-service-plan)1 | [ASE](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | -|Default [timeout duration](#timeout) (min) |5 | 30 |302 | 30 | 30 | -|Max [timeout duration](#timeout) (min) |10 | unbounded8 | unbounded3 | unbounded | unbounded | -| Max outbound connections (per instance) | 600 active (1200 total) | unbounded | unbounded | unbounded | unbounded | -| Max request size (MB)4 | 100 | 100 | 100 | 100 | Depends on cluster | -| Max query string length4 | 4096 | 4096 | 4096 | 4096 | Depends on cluster | -| Max request URL length4 | 8192 | 8192 | 8192 | 8192 | Depends on cluster | -|[ACU](../virtual-machines/windows/acu.md) per instance | 100 | 210-840 | 100-840 |Workers are roles that host customer apps. Workers are available in three fixed sizes: One vCPU/3.5 GB RAM; Two vCPU/7 GB RAM; Four vCPU/14 GB RAM | [AKS pricing](https://azure.microsoft.com/pricing/details/container-service/) | -| Max memory (GB per instance) | 1.5 | 3.5-14 | 1.75-14 | 3.5 - 14 | Any node is supported | -| Function apps per plan |100 |100 |unbounded5 | unbounded | unbounded | -| [App Service plans](../app-service/overview-hosting-plans.md) | 100 per [region](https://azure.microsoft.com/global-infrastructure/regions/) |100 per resource group |100 per resource group | - | - | -| Storage6 |1 GB |250 GB |50-1000 GB | 1 TB | n/a | -| Custom domains per app |5007 |500 |500 | 500 | n/a | -| Custom domain [SSL support](../app-service/configure-ssl-bindings.md) |unbounded SNI SSL connection included | unbounded SNI SSL and 1 IP SSL connections included |unbounded SNI SSL and 1 IP SSL connections included | unbounded SNI SSL and 1 IP SSL connections included | n/a | +[!INCLUDE [functions-limits](../../../includes/functions-limits.md)] ### Networking features @@ -232,13 +218,10 @@ The following comparison table shows all important aspects to help the decision | --- | --- | --- | --- | --- | |Pay only when your functions are running. Billing is based on number of executions, execution time, and memory used. |More predictable pricing. Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. At least one instance must be warm at all times per plan. |You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps. | There is a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. In addition, there is a cost per App Service plan vCPU. All apps hosted in an ASE are in the Isolated pricing SKU. |User would be paying for AKS. Functions just run as an application workload on top of their cluster - potentially alongside other apps. | -1 For specific limits for the various App Service plan options, see the [App Service plan limits](../azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). -2 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded. -3 Requires the App Service plan be set to [Always On](#always-on). Pay at standard [rates](https://azure.microsoft.com/pricing/details/app-service/). -4 These limits are [set in the host](https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/web.config). -5 The actual number of function apps that you can host depends on the activity of the apps, the size of the machine instances, and the corresponding resource utilization. -6 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. Consumption plan uses Azure Files for temporary storage. -7 When your function app is hosted in a [Consumption plan](#consumption-plan), only the CNAME option is supported. For function apps in a [Premium plan](#premium-plan) or an [App Service plan](#app-service-plan), you can map a custom domain using either a CNAME or an A record. -8 Guaranteed for up to 60 minutes. +[!INCLUDE [functions-limits-notes](../../includes/functions-limits-notes.md)] +## Next steps ++ [Deployment technologies in Azure Functions](functions-deployment-technologies.md) ++ [Azure Functions triggers and bindings concepts](functions-triggers-bindings.md) ++ [Azure Functions developer guide](functions-reference.md) diff --git a/articles/azure-resource-manager/management/azure-subscription-service-limits.md b/articles/azure-resource-manager/management/azure-subscription-service-limits.md index a7fcf78f617c0..744c48392a2a8 100644 --- a/articles/azure-resource-manager/management/azure-subscription-service-limits.md +++ b/articles/azure-resource-manager/management/azure-subscription-service-limits.md @@ -120,6 +120,10 @@ For Azure Database for PostgreSQL limits, see [Limitations in Azure Database for [!INCLUDE [functions-limits](../../../includes/functions-limits.md)] +[!INCLUDE [functions-limits-notes](../../includes/functions-limits-notes.md)] + +For more information, see [Functions Hosting plans comparison](../../azure-functions/functions-scale.md#hosting-plans-comparison). + ## Azure Kubernetes Service limits [!INCLUDE [container-service-limits](../../../includes/container-service-limits.md)] diff --git a/includes/functions-limits-notes.md b/includes/functions-limits-notes.md new file mode 100644 index 0000000000000..0341851d35eef --- /dev/null +++ b/includes/functions-limits-notes.md @@ -0,0 +1,15 @@ +--- +author: ggailey777 +ms.service: azure-functions +ms.topic: include +ms.date: 05/04/2020 +ms.author: glenga +--- +1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). +2 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded. +3 Requires the App Service plan be set to [Always On](../articles/azure-functions/functions-scale.md#always-on). Pay at standard [rates](https://azure.microsoft.com/pricing/details/app-service/). +4 These limits are [set in the host](https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/web.config). +5 The actual number of function apps that you can host depends on the activity of the apps, the size of the machine instances, and the corresponding resource utilization. +6 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. Consumption plan uses Azure Files for temporary storage. +7 When your function app is hosted in a [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan), only the CNAME option is supported. For function apps in a [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) or an [App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan), you can map a custom domain using either a CNAME or an A record. +8 Guaranteed for up to 60 minutes. \ No newline at end of file diff --git a/includes/functions-limits.md b/includes/functions-limits.md index cca8fa3c2fbea..81dc35b0be733 100644 --- a/includes/functions-limits.md +++ b/includes/functions-limits.md @@ -1,33 +1,23 @@ --- author: ggailey777 -ms.service: cost-management-billing +ms.service: azure-functions ms.topic: include -ms.date: 05/09/2019 +ms.date: 05/04/2020 ms.author: glenga --- -| Resource | [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan) | [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) | [App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan)1 | -| --- | --- | --- | --- | -| Scale out | Event driven | Event driven | [Manual/autoscale](../articles/app-service/manage-scale-up.md) | -| Max instances | 200 | 100 | 10-20 | -|Default [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |5 | 30 |302 | -|Max [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |10 | unbounded8 | unbounded3 | -| Max outbound connections (per instance) | 600 active (1200 total) | unbounded | unbounded | -| Max request size (MB)4 | 100 | 100 | 100 | -| Max query string length4 | 4096 | 4096 | 4096 | -| Max request URL length4 | 8192 | 8192 | 8192 | -| [ACU](../articles/virtual-machines/windows/acu.md) per instance | 100 | 210-840 | 100-840 | -| Max memory (GB per instance) | 1.5 | 3.5-14 | 1.75-14 | -| Function apps per plan |100 |100 |unbounded5 | -| [App Service plans](../articles/app-service/overview-hosting-plans.md) | 100 per [region](https://azure.microsoft.com/global-infrastructure/regions/) |100 per resource group |100 per resource group | -| Storage6 |1 GB |250 GB |50-1000 GB | -| Custom domains per app |5007 |500 |500 | -| Custom domain [SSL support](../articles/app-service/configure-ssl-bindings.md) |unbounded SNI SSL connection included | unbounded SNI SSL and 1 IP SSL connections included |unbounded SNI SSL and 1 IP SSL connections included | +| Resource |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated plan](../articles/azure-functions/functions-scale.md#app-service-plan)|[ASE](../articles/app-service/environment/intro.md)| [Kubernetes](.../articles/aks/quotas-skus-regions.md) | +| --- | --- | --- | --- | --- | --- | +|Default [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |5 | 30 |302 | 30 | 30 | +|Max [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |10 | unbounded8 | unbounded3 | unbounded | unbounded | +| Max outbound connections (per instance) | 600 active (1200 total) | unbounded | unbounded | unbounded | unbounded | +| Max request size (MB)4 | 100 | 100 | 100 | 100 | Depends on cluster | +| Max query string length4 | 4096 | 4096 | 4096 | 4096 | Depends on cluster | +| Max request URL length4 | 8192 | 8192 | 8192 | 8192 | Depends on cluster | +|[ACU](../articles/virtual-machines/windows/acu.md) per instance | 100 | 210-840 | 100-840 |Workers are roles that host customer apps. Workers are available in three fixed sizes: One vCPU/3.5 GB RAM; Two vCPU/7 GB RAM; Four vCPU/14 GB RAM | [AKS pricing](https://azure.microsoft.com/pricing/details/container-service/) | +| Max memory (GB per instance) | 1.5 | 3.5-14 | 1.75-14 | 3.5 - 14 | Any node is supported | +| Function apps per plan |100 |100 |unbounded5 | unbounded | unbounded | +| [App Service plans](../articles/app-service/overview-hosting-plans.md) | 100 per [region](https://azure.microsoft.com/global-infrastructure/regions/) |100 per resource group |100 per resource group | - | - | +| Storage6 |1 GB |250 GB |50-1000 GB | 1 TB | n/a | +| Custom domains per app |5007 |500 |500 | 500 | n/a | +| Custom domain [SSL support](../articles/app-service/configure-ssl-bindings.md) |unbounded SNI SSL connection included | unbounded SNI SSL and 1 IP SSL connections included |unbounded SNI SSL and 1 IP SSL connections included | unbounded SNI SSL and 1 IP SSL connections included | n/a | -1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). -2 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded. -3 Requires the App Service plan be set to [Always On](../articles/azure-functions/functions-scale.md#always-on). Pay at standard [rates](https://azure.microsoft.com/pricing/details/app-service/). -4 These limits are [set in the host](https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/web.config). -5 The actual number of function apps that you can host depends on the activity of the apps, the size of the machine instances, and the corresponding resource utilization. -6 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. Consumption plan uses Azure Files for temporary storage. -7 When your function app is hosted in a [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan), only the CNAME option is supported. For function apps in a [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) or an [App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan), you can map a custom domain using either a CNAME or an A record. -8 Guaranteed for up to 60 minutes. \ No newline at end of file From d5147280c8a1630ea406cccc6db4355b93303ce4 Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Mon, 4 May 2020 19:10:33 -0700 Subject: [PATCH 13/23] reference and link fixes --- articles/azure-functions/functions-scale.md | 2 +- .../management/azure-subscription-service-limits.md | 2 +- includes/functions-limits.md | 2 +- includes/functions-networking-features.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index 3c5bda461ab3f..eb0545bb2a3ff 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -206,7 +206,7 @@ The following comparison table shows all important aspects to help the decision ### Service limits -[!INCLUDE [functions-limits](../../../includes/functions-limits.md)] +[!INCLUDE [functions-limits](../../includes/functions-limits.md)] ### Networking features diff --git a/articles/azure-resource-manager/management/azure-subscription-service-limits.md b/articles/azure-resource-manager/management/azure-subscription-service-limits.md index 744c48392a2a8..b342fd4cfedb2 100644 --- a/articles/azure-resource-manager/management/azure-subscription-service-limits.md +++ b/articles/azure-resource-manager/management/azure-subscription-service-limits.md @@ -120,7 +120,7 @@ For Azure Database for PostgreSQL limits, see [Limitations in Azure Database for [!INCLUDE [functions-limits](../../../includes/functions-limits.md)] -[!INCLUDE [functions-limits-notes](../../includes/functions-limits-notes.md)] +[!INCLUDE [functions-limits-notes](../../../includes/functions-limits-notes.md)] For more information, see [Functions Hosting plans comparison](../../azure-functions/functions-scale.md#hosting-plans-comparison). diff --git a/includes/functions-limits.md b/includes/functions-limits.md index 81dc35b0be733..4f2a1bf17f60f 100644 --- a/includes/functions-limits.md +++ b/includes/functions-limits.md @@ -5,7 +5,7 @@ ms.topic: include ms.date: 05/04/2020 ms.author: glenga --- -| Resource |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated plan](../articles/azure-functions/functions-scale.md#app-service-plan)|[ASE](../articles/app-service/environment/intro.md)| [Kubernetes](.../articles/aks/quotas-skus-regions.md) | +| Resource |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated plan](../articles/azure-functions/functions-scale.md#app-service-plan)|[ASE](../articles/app-service/environment/intro.md)| [Kubernetes](../articles/aks/quotas-skus-regions.md) | | --- | --- | --- | --- | --- | --- | |Default [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |5 | 30 |302 | 30 | 30 | |Max [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |10 | unbounded8 | unbounded3 | unbounded | unbounded | diff --git a/includes/functions-networking-features.md b/includes/functions-networking-features.md index 8358b5ccf3279..727427d6f9bab 100644 --- a/includes/functions-networking-features.md +++ b/includes/functions-networking-features.md @@ -1,6 +1,6 @@ -| Feature |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated plan](../articles/azure-functions/functions-scale.md#app-service-plan)|[ASE](../articles/app-service/environment/intro.md)| [Kubernetes](.../articles/aks/quotas-skus-regions.md) | +| Feature |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated plan](../articles/azure-functions/functions-scale.md#app-service-plan)|[ASE](../articles/app-service/environment/intro.md)| [Kubernetes](../articles/aks/quotas-skus-regions.md) | |----------------|-----------|----------------|---------|-----------------------| ---| |[Inbound IP restrictions and private site access](../articles/azure-functions/functions-networking-options.md#inbound-ip-restrictions)|✅Yes|✅Yes|✅Yes|✅Yes|✅Yes| |[Virtual network integration](../articles/azure-functions/functions-networking-options.md#virtual-network-integration)|❌No|✅Yes (Regional)|✅Yes (Regional and Gateway)|✅Yes| ✅Yes| From fd0fc96fe5b154864cabc457c8a282fb1bb89d82 Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Tue, 5 May 2020 15:19:09 -0700 Subject: [PATCH 14/23] remove bullets from the tables --- articles/azure-functions/functions-scale.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index eb0545bb2a3ff..c61798f7165ac 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -181,16 +181,16 @@ The following comparison table shows all important aspects to help the decision |[Consumption plan](#consumption-plan)|[Premium plan](#premium-plan)|[Dedicated plan](#app-service-plan)1|[ASE](#app-service-plan)1|[Kubernetes](../aks/quotas-skus-regions.md)| | --- | --- | --- | --- | --- | -|Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
  • Default hosting plan
  • Pay only when your functions are running.
  • Scale out automatically, even during periods of high load
|While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
  • Your function apps run continuously, or nearly continuously.
  • You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
  • You need more CPU or memory options than what is provided by the Consumption plan.
  • Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
  • You require features that are only avail [able on a Premium plan, such as virtual network connectivity.
|Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
  • You have existing, underutilized VMs that are already running other App Service instances.
  • You want to provide a custom image on which to run your functions.
|App Service Environment (ASE) is an App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. ASEs are appropriate for application workloads that require:
  • Very high scale.
  • Isolation and secure network access.
  • High memory utilization.
|Kubernetes (recommended in [AKS](../aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
  • Custom hardware requirements.
  • Isolation and secure network access.
  • Ability to run in hybrid or multi-cloud environment.
  • Run alongside existing Kubernetes applications and services.
| +|Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
✔ Default hosting plan.
✔ Pay only when your functions are running.
✔ Scale out automatically, even during periods of high load.|While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
Your function apps run continuously, or nearly continuously.
✔ You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
✔ You need more CPU or memory options than what is provided by the Consumption plan.
✔ Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
✔ You require features that are only avail [able on a Premium plan, such as virtual network connectivity.
|Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
✔ You have existing, underutilized VMs that are already running other App Service instances.
✔ You want to provide a custom image on which to run your functions.
|App Service Environment (ASE) is an App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. ASEs are appropriate for application workloads that require:
✔ Very high scale.
✔ Isolation and secure network access.
✔ High memory utilization.
|Kubernetes (recommended in [AKS](../aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
✔ Custom hardware requirements.
✔ Isolation and secure network access.
✔ Ability to run in hybrid or multi-cloud environment.
✔ Run alongside existing Kubernetes applications and services.
| ### Operating System/Runtime | | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated plan](#app-service-plan)1 | [ASE](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | | --- | --- | --- | --- | --- | --- | -|**Linux: code-only**
Linux is the only supported operating system for the Python runtime stack. |
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • Python
|n/a | -| **Windows: code-only**
Windows is the only supported operating system for the PowerShell runtime stack. |
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
|n/a | -| **Linux: Docker container**
Linux is the only supported operating system for Docker containers. |No support. |
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
|
  • .NET Core
  • Node.js
  • Java
  • PowerShell Core
  • Python
| -| **Windows: Docker container**. |No support. |No support. |No support. |No support. |No support. | +|**Linux: code-only**
Linux is the only supported operating system for the Python runtime stack. |.NET Core
Node.js
Java
Python |.NET Core
Node.js
Java
Python |.NET Core
Node.js
Java
Python |.NET Core
Node.js
Java
Python |n/a | +| **Windows: code-only**
Windows is the only supported operating system for the PowerShell runtime stack. |.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core |n/a | +| **Linux: Docker container**
Linux is the only supported operating system for Docker containers. |No support |.NET Core
Node.js
Java
PowerShell Core
Python |.NET Core
Node.js
Java
PowerShell Core
Python |.NET Core
Node.js
Java
PowerShell Core
Python |.NET Core
Node.js
Java
PowerShell Core
Python | +| **Windows: Docker container**. |No support |No support |No support |No support |No support | ### Scale | | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated plan](#app-service-plan)1 | [ASE](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | From 0a5a2c429c658496d57fcff9143b71ffb3bc208f Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Mon, 8 Jun 2020 12:34:14 -0700 Subject: [PATCH 15/23] Review comments pt. #1 --- articles/azure-functions/functions-scale.md | 68 ++++++++++++++------- includes/functions-limits-notes.md | 15 ----- includes/functions-limits.md | 23 ++++--- includes/functions-networking-features.md | 2 +- 4 files changed, 63 insertions(+), 45 deletions(-) delete mode 100644 includes/functions-limits-notes.md diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index c61798f7165ac..fb4c00289e214 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -178,31 +178,53 @@ Useful queries and information on how to understand your consumption bill can be The following comparison table shows all important aspects to help the decision of Azure Functions App hosting plan choice: ### Plan summary +| | | +| --- | --- | +|**[Consumption plan](#consumption-plan)**| Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
✔ Default hosting plan.
✔ Pay only when your functions are running.
✔ Scale out automatically, even during periods of high load.| +|**[Premium plan](#premium-plan)**|While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
✔ Your function apps run continuously, or nearly continuously.
✔ You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
✔ You need more CPU or memory options than what is provided by the Consumption plan.
✔ Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
✔ You require features that are only avail [able on a Premium plan, such as virtual network connectivity.| +|**[Dedicated plan](#app-service-plan)**1|Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
✔ You have existing, underutilized VMs that are already running other App Service instances.
✔ You want to provide a custom image on which to run your functions.| +|**[ASE](#app-service-plan)**1|App Service Environment (ASE) is an App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. ASEs are appropriate for application workloads that require:
✔ Very high scale.
✔ Isolation and secure network access.
✔ High memory utilization.| +| **[Kubernetes](functions-kubernetes-keda.md)** | Kubernetes provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
✔ Custom hardware requirements.
✔ Isolation and secure network access.
✔ Ability to run in hybrid or multi-cloud environment.
✔ Run alongside existing Kubernetes applications and services.| -|[Consumption plan](#consumption-plan)|[Premium plan](#premium-plan)|[Dedicated plan](#app-service-plan)1|[ASE](#app-service-plan)1|[Kubernetes](../aks/quotas-skus-regions.md)| -| --- | --- | --- | --- | --- | -|Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
✔ Default hosting plan.
✔ Pay only when your functions are running.
✔ Scale out automatically, even during periods of high load.|While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
Your function apps run continuously, or nearly continuously.
✔ You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
✔ You need more CPU or memory options than what is provided by the Consumption plan.
✔ Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
✔ You require features that are only avail [able on a Premium plan, such as virtual network connectivity.
|Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
✔ You have existing, underutilized VMs that are already running other App Service instances.
✔ You want to provide a custom image on which to run your functions.
|App Service Environment (ASE) is an App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. ASEs are appropriate for application workloads that require:
✔ Very high scale.
✔ Isolation and secure network access.
✔ High memory utilization.
|Kubernetes (recommended in [AKS](../aks/intro-kubernetes.md)) provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
✔ Custom hardware requirements.
✔ Isolation and secure network access.
✔ Ability to run in hybrid or multi-cloud environment.
✔ Run alongside existing Kubernetes applications and services.
| +1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). ### Operating System/Runtime -| | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated plan](#app-service-plan)1 | [ASE](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | -|**Linux: code-only**
Linux is the only supported operating system for the Python runtime stack. |.NET Core
Node.js
Java
Python |.NET Core
Node.js
Java
Python |.NET Core
Node.js
Java
Python |.NET Core
Node.js
Java
Python |n/a | -| **Windows: code-only**
Windows is the only supported operating system for the PowerShell runtime stack. |.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core |n/a | -| **Linux: Docker container**
Linux is the only supported operating system for Docker containers. |No support |.NET Core
Node.js
Java
PowerShell Core
Python |.NET Core
Node.js
Java
PowerShell Core
Python |.NET Core
Node.js
Java
PowerShell Core
Python |.NET Core
Node.js
Java
PowerShell Core
Python | -| **Windows: Docker container**. |No support |No support |No support |No support |No support | +| | Linux1
Code-only | Windows2
Code-only | Linux1,3
Docker container | +| --- | --- | --- | --- | --- | +| **[Consumption plan](#consumption-plan)** | .NET Core
Node.js
Java
Python | .NET Core
Node.js
Java
PowerShell Core | No support | +| **[Premium plan](#premium-plan)** | .NET Core
Node.js
Java
Python|.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core
Python | +| **[Dedicated plan](#app-service-plan)**1 | .NET Core
Node.js
Java
Python|.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core
Python | +| **[ASE](#app-service-plan)**1 | .NET Core
Node.js
Java
Python |.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core
Python | +| **[Kubernetes](functions-kubernetes-keda.md)** | n/a | n/a |.NET Core
Node.js
Java
PowerShell Core
Python | + +1Linux is the only supported operating system for the Python runtime stack. +2Windows is the only supported operating system for the PowerShell runtime stack. +3Linux is the only supported operating system for Docker containers. ### Scale -| | [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated plan](#app-service-plan)1 | [ASE](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | --- | -| Scale out | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | Manual/autoscale | Manual/autoscale | [KEDA](https://keda.sh) - Kubernetes-based event driven autoscale | -| Max instances | 200 | 100 | 10-20 | 100| Depends on cluster | + +| | Scale out | Max # instances | +| --- | --- | --- | +| **[Consumption plan](#consumption-plan)** | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. | 200 | +| **[Premium plan](#premium-plan)** | Event driven. Scale out automatically, even during periods of high load. Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. |100| +| **[Dedicated plan](#app-service-plan)**1 | Manual/autoscale |10-20| +| **[ASE](#app-service-plan)**1 | Manual/autoscale |100 | +| **[Kubernetes](functions-kubernetes-keda.md)** | Event-driven autoscale for Kubernetes clusters using [KEDA](https://keda.sh). | Varies by cluster.  | + +1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). ### Cold Start -| [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated plan](#app-service-plan)1 | [ASE](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | -| Instead of starting from scratch every time, we’ve implemented a way to keep a pool of servers warm and draw workers from that pool. What this means is that at any point in time there are idle workers that have been preconfigured with the Functions runtime up and running. Making these “pre-warmed sites” happen has given us measurable  improvements on our cold start times. | Perpetually warm instances to avoid any cold start. | When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. |When using Azure Functions in the dedicated plan, the Functions host is always running, which means that cold start isn’t really an issue. | Depends on KEDA configuration. Apps can be configured to always run and never have cold start, or configured to scale to zero which would cause cold start on new events. | +| | | +| -- | -- | +| **[Consumption plan](#consumption-plan)** | Instead of starting from scratch every time, we’ve implemented a way to keep a pool of servers warm and draw workers from that pool. What this means is that at any point in time there are idle workers that have been preconfigured with the Functions runtime up and running. Making these “pre-warmed sites” happen has given us measurable  improvements on our cold start times. | +| **[Premium plan](#premium-plan)** | Perpetually warm instances to avoid any cold start. | +| **[Dedicated plan](#app-service-plan)**1 | When running in a Dedicated plan, the Functions host can run continuously, which means that cold start isn’t really an issue. | +| **[ASE](#app-service-plan)**1 | When running in a Dedicated plan, the Functions host can run continuously, which means that cold start isn’t really an issue. | +| **[Kubernetes](functions-kubernetes-keda.md)** | Depends on KEDA configuration. Apps can be configured to always run and never have cold start, or configured to scale to zero which results in cold start on new events. + +1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). ### Service limits @@ -214,14 +236,18 @@ The following comparison table shows all important aspects to help the decision ### Billing -| [Consumption plan](#consumption-plan) | [Premium plan](#premium-plan) | [Dedicated plan](#app-service-plan)1 | [ASE](#app-service-plan)1 | [Kubernetes](../aks/quotas-skus-regions.md) | -| --- | --- | --- | --- | --- | -|Pay only when your functions are running. Billing is based on number of executions, execution time, and memory used. |More predictable pricing. Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. At least one instance must be warm at all times per plan. |You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps. | There is a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. In addition, there is a cost per App Service plan vCPU. All apps hosted in an ASE are in the Isolated pricing SKU. |User would be paying for AKS. Functions just run as an application workload on top of their cluster - potentially alongside other apps. | +| | | +| --- | --- | +| **[Consumption plan](#consumption-plan)** | Pay only for the time your functions run. Billing is based on number of executions, execution time, and memory used. | +| **[Premium plan](#premium-plan)** | Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. At least one instance per plan must be kept warm at all times. This plan provides more predictable pricing. | +| **[Dedicated plan](#app-service-plan)**1 | You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps.| +| **[ASE](#app-service-plan)**1 | There is a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. In addition, there is a cost per App Service plan vCPU. All apps hosted in an ASE are in the Isolated pricing SKU. | +| **[Kubernetes](functions-kubernetes-keda.md)**| You pay only the costs of your Kubernetes cluster; no additional billing for Functions. Your function app runs as an application workload on top of your cluster, just like a regular app. | -[!INCLUDE [functions-limits-notes](../../includes/functions-limits-notes.md)] +1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). ## Next steps ++ [Quickstart: Create an Azure Functions project using Visual Studio Code](functions-create-first-function-vs-code.md) + [Deployment technologies in Azure Functions](functions-deployment-technologies.md) -+ [Azure Functions triggers and bindings concepts](functions-triggers-bindings.md) + [Azure Functions developer guide](functions-reference.md) diff --git a/includes/functions-limits-notes.md b/includes/functions-limits-notes.md deleted file mode 100644 index 0341851d35eef..0000000000000 --- a/includes/functions-limits-notes.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -author: ggailey777 -ms.service: azure-functions -ms.topic: include -ms.date: 05/04/2020 -ms.author: glenga ---- -1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). -2 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded. -3 Requires the App Service plan be set to [Always On](../articles/azure-functions/functions-scale.md#always-on). Pay at standard [rates](https://azure.microsoft.com/pricing/details/app-service/). -4 These limits are [set in the host](https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/web.config). -5 The actual number of function apps that you can host depends on the activity of the apps, the size of the machine instances, and the corresponding resource utilization. -6 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. Consumption plan uses Azure Files for temporary storage. -7 When your function app is hosted in a [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan), only the CNAME option is supported. For function apps in a [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) or an [App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan), you can map a custom domain using either a CNAME or an A record. -8 Guaranteed for up to 60 minutes. \ No newline at end of file diff --git a/includes/functions-limits.md b/includes/functions-limits.md index 4f2a1bf17f60f..78e9b24261040 100644 --- a/includes/functions-limits.md +++ b/includes/functions-limits.md @@ -7,17 +7,24 @@ ms.author: glenga --- | Resource |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated plan](../articles/azure-functions/functions-scale.md#app-service-plan)|[ASE](../articles/app-service/environment/intro.md)| [Kubernetes](../articles/aks/quotas-skus-regions.md) | | --- | --- | --- | --- | --- | --- | -|Default [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |5 | 30 |302 | 30 | 30 | -|Max [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |10 | unbounded8 | unbounded3 | unbounded | unbounded | +|Default [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |5 | 30 |301 | 30 | 30 | +|Max [timeout duration](../articles/azure-functions/functions-scale.md#timeout) (min) |10 | unbounded7 | unbounded2 | unbounded | unbounded | | Max outbound connections (per instance) | 600 active (1200 total) | unbounded | unbounded | unbounded | unbounded | -| Max request size (MB)4 | 100 | 100 | 100 | 100 | Depends on cluster | -| Max query string length4 | 4096 | 4096 | 4096 | 4096 | Depends on cluster | -| Max request URL length4 | 8192 | 8192 | 8192 | 8192 | Depends on cluster | +| Max request size (MB)3 | 100 | 100 | 100 | 100 | Depends on cluster | +| Max query string length3 | 4096 | 4096 | 4096 | 4096 | Depends on cluster | +| Max request URL length3 | 8192 | 8192 | 8192 | 8192 | Depends on cluster | |[ACU](../articles/virtual-machines/windows/acu.md) per instance | 100 | 210-840 | 100-840 |Workers are roles that host customer apps. Workers are available in three fixed sizes: One vCPU/3.5 GB RAM; Two vCPU/7 GB RAM; Four vCPU/14 GB RAM | [AKS pricing](https://azure.microsoft.com/pricing/details/container-service/) | | Max memory (GB per instance) | 1.5 | 3.5-14 | 1.75-14 | 3.5 - 14 | Any node is supported | -| Function apps per plan |100 |100 |unbounded5 | unbounded | unbounded | +| Function apps per plan |100 |100 |unbounded4 | unbounded | unbounded | | [App Service plans](../articles/app-service/overview-hosting-plans.md) | 100 per [region](https://azure.microsoft.com/global-infrastructure/regions/) |100 per resource group |100 per resource group | - | - | -| Storage6 |1 GB |250 GB |50-1000 GB | 1 TB | n/a | -| Custom domains per app |5007 |500 |500 | 500 | n/a | +| Storage5 |1 GB |250 GB |50-1000 GB | 1 TB | n/a | +| Custom domains per app |5006 |500 |500 | 500 | n/a | | Custom domain [SSL support](../articles/app-service/configure-ssl-bindings.md) |unbounded SNI SSL connection included | unbounded SNI SSL and 1 IP SSL connections included |unbounded SNI SSL and 1 IP SSL connections included | unbounded SNI SSL and 1 IP SSL connections included | n/a | +1 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded. +2 Requires the App Service plan be set to [Always On](../articles/azure-functions/functions-scale.md#always-on). Pay at standard [rates](https://azure.microsoft.com/pricing/details/app-service/). +3 These limits are [set in the host](https://github.com/Azure/azure-functions-host/blob/dev/src/WebJobs.Script.WebHost/web.config). +4 The actual number of function apps that you can host depends on the activity of the apps, the size of the machine instances, and the corresponding resource utilization. +5 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. Consumption plan uses Azure Files for temporary storage. +6 When your function app is hosted in a [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan), only the CNAME option is supported. For function apps in a [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) or an [App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan), you can map a custom domain using either a CNAME or an A record. +7 Guaranteed for up to 60 minutes. \ No newline at end of file diff --git a/includes/functions-networking-features.md b/includes/functions-networking-features.md index 727427d6f9bab..85794242d1163 100644 --- a/includes/functions-networking-features.md +++ b/includes/functions-networking-features.md @@ -1,6 +1,6 @@ -| Feature |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated plan](../articles/azure-functions/functions-scale.md#app-service-plan)|[ASE](../articles/app-service/environment/intro.md)| [Kubernetes](../articles/aks/quotas-skus-regions.md) | +| Feature |[Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan)|[Premium plan](../articles/azure-functions/functions-scale.md#premium-plan)|[Dedicated plan](../articles/azure-functions/functions-scale.md#app-service-plan)|[ASE](../articles/app-service/environment/intro.md)| [Kubernetes](../articles/azure-functions/functions-kubernetes-keda.md) | |----------------|-----------|----------------|---------|-----------------------| ---| |[Inbound IP restrictions and private site access](../articles/azure-functions/functions-networking-options.md#inbound-ip-restrictions)|✅Yes|✅Yes|✅Yes|✅Yes|✅Yes| |[Virtual network integration](../articles/azure-functions/functions-networking-options.md#virtual-network-integration)|❌No|✅Yes (Regional)|✅Yes (Regional and Gateway)|✅Yes| ✅Yes| From 5572d1e6359ad03d2ac6e93732f3385c461ab6ba Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Mon, 8 Jun 2020 15:00:58 -0700 Subject: [PATCH 16/23] removed old include --- .../management/azure-subscription-service-limits.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/articles/azure-resource-manager/management/azure-subscription-service-limits.md b/articles/azure-resource-manager/management/azure-subscription-service-limits.md index b342fd4cfedb2..7265c5f4c15fb 100644 --- a/articles/azure-resource-manager/management/azure-subscription-service-limits.md +++ b/articles/azure-resource-manager/management/azure-subscription-service-limits.md @@ -120,8 +120,6 @@ For Azure Database for PostgreSQL limits, see [Limitations in Azure Database for [!INCLUDE [functions-limits](../../../includes/functions-limits.md)] -[!INCLUDE [functions-limits-notes](../../../includes/functions-limits-notes.md)] - For more information, see [Functions Hosting plans comparison](../../azure-functions/functions-scale.md#hosting-plans-comparison). ## Azure Kubernetes Service limits From 7a56b2994b975191e65bfc7e46b0eb80897b8970 Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Mon, 8 Jun 2020 15:32:19 -0700 Subject: [PATCH 17/23] acrolinx and link fixes --- articles/azure-functions/functions-scale.md | 24 ++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index fb4c00289e214..715dfbed0763d 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -66,7 +66,7 @@ When you're using the Premium plan, instances of the Azure Functions host are ad Information on how you can configure these options can be found in the [Azure Functions Premium plan document](functions-premium-plan.md). -Instead of billing per execution and memory consumed, billing for the Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. At least one instance must be warm at all times per plan. This means that there is a minimum monthly cost per active plan, regardless of the number of executions. Keep in mind that all function apps in a Premium plan share pre-warmed and active instances. +Instead of billing per execution and memory consumed, billing for the Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. At least one instance must be warm at all times per plan. This means that there's a minimum monthly cost per active plan, regardless of the number of executions. Keep in mind that all function apps in a Premium plan share pre-warmed and active instances. Consider the Azure Functions Premium plan in the following situations: @@ -94,7 +94,7 @@ With an App Service plan, you can manually scale out by adding more VM instances When running JavaScript functions on an App Service plan, you should choose a plan that has fewer vCPUs. For more information, see [Choose single-core App Service plans](functions-reference-node.md#choose-single-vcpu-app-service-plans). -Running in an [App Service Environment](../app-service/environment/intro.md) (ASE) lets you fully isolate your functions and take advantage of very high scale. +Running in an [App Service Environment](../app-service/environment/intro.md) (ASE) lets you fully isolate your functions and take advantage of high scale. ### Always On @@ -122,11 +122,11 @@ When the output from this command is `dynamic`, your function app is in the Cons ## Storage account requirements -On any plan, a function app requires a general Azure Storage account, which supports Azure Blob, Queue, Files, and Table storage. This is because Functions relies on Azure Storage for operations such as managing triggers and logging function executions, but some storage accounts do not support queues and tables. These accounts, which include blob-only storage accounts (including premium storage) and general-purpose storage accounts with zone-redundant storage replication, are filtered-out from your existing **Storage Account** selections when you create a function app. +On any plan, a function app requires a general Azure Storage account, which supports Azure Blob, Queue, Files, and Table storage. This is because Functions relies on Azure Storage for operations such as managing triggers and logging function executions, but some storage accounts don't support queues and tables. These accounts, which include blob-only storage accounts (including premium storage) and general-purpose storage accounts with zone-redundant storage replication, are filtered-out from your existing **Storage Account** selections when you create a function app. The same storage account used by your function app can also be used by your triggers and bindings to store your application data. However, for storage-intensive operations, you should use a separate storage account. -It's certainly possible for multiple function apps to share the same storage account without any issues. (A good example of this is when you develop multiple apps in your local environment using the Azure Storage Emulator, which acts like one storage account.) +It's possible for multiple function apps to share the same storage account without any issues. (A good example of this is when you develop multiple apps in your local environment using the Azure Storage Emulator, which acts like one storage account.) @@ -160,7 +160,7 @@ Scaling can vary on a number of factors, and scale differently based on the trig There are many aspects of a function app that will impact how well it will scale, including host configuration, runtime footprint, and resource efficiency. For more information, see the [scalability section of the performance considerations article](functions-best-practices.md#scalability-best-practices). You should also be aware of how connections behave as your function app scales. For more information, see [How to manage connections in Azure Functions](manage-connections.md). -For additional information on scaling in Python and Node.js, see [Azure Functions Python developer guide - Scaling and concurrency](functions-reference-python.md#scaling-and-concurrency) and [Azure Functions Node.js developer guide - Scaling and concurrency](functions-reference-node.md#scaling-and-concurrency). +For more information on scaling in Python and Node.js, see [Azure Functions Python developer guide - Scaling and concurrency](functions-reference-python.md#scaling-and-concurrency) and [Azure Functions Node.js developer guide - Scaling and concurrency](functions-reference-node.md#scaling-and-concurrency). ### Billing model @@ -180,13 +180,13 @@ The following comparison table shows all important aspects to help the decision ### Plan summary | | | | --- | --- | -|**[Consumption plan](#consumption-plan)**| Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
✔ Default hosting plan.
✔ Pay only when your functions are running.
✔ Scale out automatically, even during periods of high load.| +|**[Consumption plan](#consumption-plan)**| Scale automatically and only pay for compute resources when your functions are running. On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.
✔ Default hosting plan.
✔ Pay only when your functions are running.
✔ scale-out automatically, even during periods of high load.| |**[Premium plan](#premium-plan)**|While automatically scaling based on demand, use pre-warmed workers to run applications with no delay after being idle, run on more powerful instances, and connect to VNETs. Consider the Azure Functions Premium plan in the following situations, in addition to all features of the App Service plan:
✔ Your function apps run continuously, or nearly continuously.
✔ You have a high number of small executions and have a high execution bill but low GB second bill in the Consumption plan.
✔ You need more CPU or memory options than what is provided by the Consumption plan.
✔ Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
✔ You require features that are only avail [able on a Premium plan, such as virtual network connectivity.| |**[Dedicated plan](#app-service-plan)**1|Run your functions within an App Service plan at regular App Service plan rates. Good fit for long running operations, as well as when more predictive scaling and costs are required. Consider an App Service plan in the following situations:
✔ You have existing, underutilized VMs that are already running other App Service instances.
✔ You want to provide a custom image on which to run your functions.| |**[ASE](#app-service-plan)**1|App Service Environment (ASE) is an App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale. ASEs are appropriate for application workloads that require:
✔ Very high scale.
✔ Isolation and secure network access.
✔ High memory utilization.| | **[Kubernetes](functions-kubernetes-keda.md)** | Kubernetes provides a fully isolated and dedicated environment running on top of the Kubernetes platform. Kubernetes is appropriate for application workloads that require:
✔ Custom hardware requirements.
✔ Isolation and secure network access.
✔ Ability to run in hybrid or multi-cloud environment.
✔ Run alongside existing Kubernetes applications and services.| -1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). +1 For specific limits for the various App Service plan options, see the [App Service plan limits](../azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). ### Operating System/Runtime @@ -212,7 +212,7 @@ The following comparison table shows all important aspects to help the decision | **[ASE](#app-service-plan)**1 | Manual/autoscale |100 | | **[Kubernetes](functions-kubernetes-keda.md)** | Event-driven autoscale for Kubernetes clusters using [KEDA](https://keda.sh). | Varies by cluster.  | -1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). +1 For specific limits for the various App Service plan options, see the [App Service plan limits](../azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). ### Cold Start @@ -222,9 +222,9 @@ The following comparison table shows all important aspects to help the decision | **[Premium plan](#premium-plan)** | Perpetually warm instances to avoid any cold start. | | **[Dedicated plan](#app-service-plan)**1 | When running in a Dedicated plan, the Functions host can run continuously, which means that cold start isn’t really an issue. | | **[ASE](#app-service-plan)**1 | When running in a Dedicated plan, the Functions host can run continuously, which means that cold start isn’t really an issue. | -| **[Kubernetes](functions-kubernetes-keda.md)** | Depends on KEDA configuration. Apps can be configured to always run and never have cold start, or configured to scale to zero which results in cold start on new events. +| **[Kubernetes](functions-kubernetes-keda.md)** | Depends on KEDA configuration. Apps can be configured to always run and never have cold start, or configured to scale to zero, which results in cold start on new events. -1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). +1 For specific limits for the various App Service plan options, see the [App Service plan limits](../azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). ### Service limits @@ -241,10 +241,10 @@ The following comparison table shows all important aspects to help the decision | **[Consumption plan](#consumption-plan)** | Pay only for the time your functions run. Billing is based on number of executions, execution time, and memory used. | | **[Premium plan](#premium-plan)** | Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. At least one instance per plan must be kept warm at all times. This plan provides more predictable pricing. | | **[Dedicated plan](#app-service-plan)**1 | You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps.| -| **[ASE](#app-service-plan)**1 | There is a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. In addition, there is a cost per App Service plan vCPU. All apps hosted in an ASE are in the Isolated pricing SKU. | +| **[ASE](#app-service-plan)**1 | there's a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. In addition, there's a cost per App Service plan vCPU. All apps hosted in an ASE are in the Isolated pricing SKU. | | **[Kubernetes](functions-kubernetes-keda.md)**| You pay only the costs of your Kubernetes cluster; no additional billing for Functions. Your function app runs as an application workload on top of your cluster, just like a regular app. | -1 For specific limits for the various App Service plan options, see the [App Service plan limits](../articles/azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). +1 For specific limits for the various App Service plan options, see the [App Service plan limits](../azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). ## Next steps From cedf364504cbcdf435c1cd31576fb1611ab71e46 Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Tue, 9 Jun 2020 01:40:10 -0700 Subject: [PATCH 18/23] Jeff review suggestions. Co-authored-by: Jeff Hollan --- articles/azure-functions/functions-scale.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index 4450cc95749e4..53bd0a458efd7 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -218,7 +218,7 @@ The following comparison table shows all important aspects to help the decision | | | | -- | -- | -| **[Consumption plan](#consumption-plan)** | Instead of starting from scratch every time, we’ve implemented a way to keep a pool of servers warm and draw workers from that pool. What this means is that at any point in time there are idle workers that have been preconfigured with the Functions runtime up and running. Making these “pre-warmed sites” happen has given us measurable  improvements on our cold start times. | +| **[Consumption plan](#consumption-plan)** | Apps may scale to zero if idle for a period of time, meaning some requests may have additional latency at startup. The consumption plan does have some optimizations to help decrease cold start time, including pulling from pre-warmed placeholder functions that already have the function host and language processes running. | | **[Premium plan](#premium-plan)** | Perpetually warm instances to avoid any cold start. | | **[Dedicated plan](#app-service-plan)**1 | When running in a Dedicated plan, the Functions host can run continuously, which means that cold start isn’t really an issue. | | **[ASE](#app-service-plan)**1 | When running in a Dedicated plan, the Functions host can run continuously, which means that cold start isn’t really an issue. | From ab2c4b31551b2d23a457e5cb3535f411d933edde Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Thu, 11 Jun 2020 12:03:30 -0700 Subject: [PATCH 19/23] Remove the hosting support section and add a link to comparison --- articles/azure-functions/functions-scale.md | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index 53bd0a458efd7..fc5683b6f25e6 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -10,7 +10,7 @@ ms.custom: H1Hack27Feb2017 --- # Azure Functions scale and hosting -When you create a function app in Azure, you must choose a hosting plan for your app. There are three hosting plans available for Azure Functions: [Consumption plan](#consumption-plan), [Premium plan](#premium-plan), and [Dedicated (App Service) plan](#app-service-plan). +When you create a function app in Azure, you must choose a hosting plan for your app. There are three basic hosting plans available for Azure Functions: [Consumption plan](#consumption-plan), [Premium plan](#premium-plan), and [Dedicated (App Service) plan](#app-service-plan). All hosting plans are generally available (GA) on both Linux and Windows virtual machines. The hosting plan you choose dictates the following behaviors: @@ -24,19 +24,7 @@ Premium plan provides additional features, such as premium compute instances, th App Service plan allows you to take advantage of dedicated infrastructure, which you manage. Your function app doesn't scale based on events, which means is never scales in to zero. (Requires that [Always on](#always-on) is enabled.) -## Hosting plan support - -Feature support falls into the following two categories: - -* _Generally available (GA)_: fully supported and approved for production use. -* _Preview_: not yet fully supported nor approved for production use. - -The following table indicates the current level of support for the three hosting plans, when running on either Windows or Linux: - -| | Consumption plan | Premium plan | Dedicated plan | -|-|:----------------:|:------------:|:----------------:| -| Windows | GA | GA | GA | -| Linux | GA | GA | GA | +For a detailed comparision between the various hosting plans (including Kubernetes-based hosting), see the [Hosting plans comparision section](#hosting-plans-comparison). ## Consumption plan From 543358e64c2b8255d7286d570048ffe945c5d1b2 Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Mon, 15 Jun 2020 11:58:37 -0700 Subject: [PATCH 20/23] Fixed one superscript --- articles/azure-functions/functions-scale.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index fc5683b6f25e6..69b5f51f89ef6 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -182,13 +182,14 @@ The following comparison table shows all important aspects to help the decision | --- | --- | --- | --- | --- | | **[Consumption plan](#consumption-plan)** | .NET Core
Node.js
Java
Python | .NET Core
Node.js
Java
PowerShell Core | No support | | **[Premium plan](#premium-plan)** | .NET Core
Node.js
Java
Python|.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core
Python | -| **[Dedicated plan](#app-service-plan)**1 | .NET Core
Node.js
Java
Python|.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core
Python | -| **[ASE](#app-service-plan)**1 | .NET Core
Node.js
Java
Python |.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core
Python | +| **[Dedicated plan](#app-service-plan)**4 | .NET Core
Node.js
Java
Python|.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core
Python | +| **[ASE](#app-service-plan)**4 | .NET Core
Node.js
Java
Python |.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core
Python | | **[Kubernetes](functions-kubernetes-keda.md)** | n/a | n/a |.NET Core
Node.js
Java
PowerShell Core
Python | 1Linux is the only supported operating system for the Python runtime stack. 2Windows is the only supported operating system for the PowerShell runtime stack. 3Linux is the only supported operating system for Docker containers. +4 For specific limits for the various App Service plan options, see the [App Service plan limits](../azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). ### Scale From 3f30a2520b6b617b47ab65e846d67a4903403d13 Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Tue, 16 Jun 2020 10:47:17 -0700 Subject: [PATCH 21/23] Fix ACU for ASE (with Rogerio's numbers) --- includes/functions-limits.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/includes/functions-limits.md b/includes/functions-limits.md index 78e9b24261040..2836fc91133d9 100644 --- a/includes/functions-limits.md +++ b/includes/functions-limits.md @@ -13,7 +13,7 @@ ms.author: glenga | Max request size (MB)3 | 100 | 100 | 100 | 100 | Depends on cluster | | Max query string length3 | 4096 | 4096 | 4096 | 4096 | Depends on cluster | | Max request URL length3 | 8192 | 8192 | 8192 | 8192 | Depends on cluster | -|[ACU](../articles/virtual-machines/windows/acu.md) per instance | 100 | 210-840 | 100-840 |Workers are roles that host customer apps. Workers are available in three fixed sizes: One vCPU/3.5 GB RAM; Two vCPU/7 GB RAM; Four vCPU/14 GB RAM | [AKS pricing](https://azure.microsoft.com/pricing/details/container-service/) | +|[ACU](../articles/virtual-machines/windows/acu.md) per instance | 100 | 210-840 | 100-840 | 210-2508 | [AKS pricing](https://azure.microsoft.com/pricing/details/container-service/) | | Max memory (GB per instance) | 1.5 | 3.5-14 | 1.75-14 | 3.5 - 14 | Any node is supported | | Function apps per plan |100 |100 |unbounded4 | unbounded | unbounded | | [App Service plans](../articles/app-service/overview-hosting-plans.md) | 100 per [region](https://azure.microsoft.com/global-infrastructure/regions/) |100 per resource group |100 per resource group | - | - | @@ -27,4 +27,5 @@ ms.author: glenga 4 The actual number of function apps that you can host depends on the activity of the apps, the size of the machine instances, and the corresponding resource utilization. 5 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. Consumption plan uses Azure Files for temporary storage. 6 When your function app is hosted in a [Consumption plan](../articles/azure-functions/functions-scale.md#consumption-plan), only the CNAME option is supported. For function apps in a [Premium plan](../articles/azure-functions/functions-scale.md#premium-plan) or an [App Service plan](../articles/azure-functions/functions-scale.md#app-service-plan), you can map a custom domain using either a CNAME or an A record. -7 Guaranteed for up to 60 minutes. \ No newline at end of file +7 Guaranteed for up to 60 minutes. +8 Workers are roles that host customer apps. Workers are available in three fixed sizes: One vCPU/3.5 GB RAM; Two vCPU/7 GB RAM; Four vCPU/14 GB RAM. From 81ecc6fd310204e17c0b80a9ffc6238d888101ae Mon Sep 17 00:00:00 2001 From: Glenn Gailey Date: Tue, 16 Jun 2020 13:07:48 -0700 Subject: [PATCH 22/23] Add a cold start section --- articles/azure-functions/functions-scale.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index 69b5f51f89ef6..62c7d95faef40 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -134,6 +134,10 @@ The unit of scale for Azure Functions is the function app. When the function app ![Scale controller monitoring events and creating instances](./media/functions-scale/central-listener.png) +### Cold Start + +After your function app has been idle for a number of minutes, the platform may scale the number of instances on which your app runs down to zero. The next request has the added latency of scaling from zero to one. This latency is referred to as a _cold start_. The number of dependencies that must be loaded by your function app can impact the cold start time. Cold start is more of an issue for synchronous operations, such as HTTP triggers that must return a response. If cold starts are impacting your functions, consider running in a Premium plan or in a Dedicated plan with Always on enabled. + ### Understanding scaling behaviors Scaling can vary on a number of factors, and scale differently based on the trigger and language selected. There are a few intricacies of scaling behaviors to be aware of: @@ -176,10 +180,10 @@ The following comparison table shows all important aspects to help the decision 1 For specific limits for the various App Service plan options, see the [App Service plan limits](../azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). -### Operating System/Runtime +### Operating system/runtime | | Linux1
Code-only | Windows2
Code-only | Linux1,3
Docker container | -| --- | --- | --- | --- | --- | +| --- | --- | --- | --- | | **[Consumption plan](#consumption-plan)** | .NET Core
Node.js
Java
Python | .NET Core
Node.js
Java
PowerShell Core | No support | | **[Premium plan](#premium-plan)** | .NET Core
Node.js
Java
Python|.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core
Python | | **[Dedicated plan](#app-service-plan)**4 | .NET Core
Node.js
Java
Python|.NET Core
Node.js
Java
PowerShell Core |.NET Core
Node.js
Java
PowerShell Core
Python | @@ -203,7 +207,7 @@ The following comparison table shows all important aspects to help the decision 1 For specific limits for the various App Service plan options, see the [App Service plan limits](../azure-resource-manager/management/azure-subscription-service-limits.md#app-service-limits). -### Cold Start +### Cold start behavior | | | | -- | -- | From 6550212428907043619ef5f7a50a4f96804a7615 Mon Sep 17 00:00:00 2001 From: Paula Miller Date: Wed, 17 Jun 2020 09:58:27 +0100 Subject: [PATCH 23/23] Update functions-scale.md Pencil edit in line 27: Changed "comparision" to "comparison" as reported by Acrolinx. --- articles/azure-functions/functions-scale.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/azure-functions/functions-scale.md b/articles/azure-functions/functions-scale.md index 62c7d95faef40..7d27689a48c8c 100644 --- a/articles/azure-functions/functions-scale.md +++ b/articles/azure-functions/functions-scale.md @@ -24,7 +24,7 @@ Premium plan provides additional features, such as premium compute instances, th App Service plan allows you to take advantage of dedicated infrastructure, which you manage. Your function app doesn't scale based on events, which means is never scales in to zero. (Requires that [Always on](#always-on) is enabled.) -For a detailed comparision between the various hosting plans (including Kubernetes-based hosting), see the [Hosting plans comparision section](#hosting-plans-comparison). +For a detailed comparison between the various hosting plans (including Kubernetes-based hosting), see the [Hosting plans comparison section](#hosting-plans-comparison). ## Consumption plan