Opções de hospedagem do Azure Functions

Ao criar um aplicativo de funções no Azure, você precisa escolher um plano de hospedagem para o aplicativo. Há três planos de hospedagem básicos disponíveis para Azure Functions: o plano de Consumo, o plano Premium e o plano Dedicado (Serviço de Aplicativo). Todos os planos de hospedagem estão em GA (disponibilidade geral) em máquinas virtuais do Linux e do Windows.

O plano de hospedagem que você escolher ditará os seguintes comportamentos:

  • Como o aplicativo de funções é dimensionado.
  • Os recursos disponíveis para cada instância do aplicativo de funções.
  • Suporte para funcionalidades avançadas, como conectividade à Rede Virtual do Azure.

Este artigo fornece uma comparação detalhada entre os vários planos de hospedagem, juntamente com a hospedagem baseada em Kubernetes.

Observação

Se você optar por hospedar suas funções em um cluster Kubernetes, considere o uso de um cluster Kubernetes habilitado para o Azure Arc. A hospedagem em um cluster Kubernetes habilitado para o Azure Arc está atualmente em versão prévia. Para saber mais, confira Serviço de Aplicativo, Functions e Aplicativos Lógicos no Azure Arc.

Visão geral dos planos

Veja o seguinte resumo dos benefícios dos três principais planos de hospedagem para o Functions:

Plano Vantagens
Plano de Consumo Dimensione automaticamente e pague apenas pelos recursos de computação quando suas funções estiverem em execução.

No plano de Consumo, as instâncias do host do Functions são adicionadas e removidas dinamicamente com base no número de eventos de entrada.

✔ Plano de hospedagem padrão.
✔ Pague apenas quando suas funções forem executadas.
✔ Escala horizontalmente de maneira automática, mesmo durante períodos de carga alta.
Plano Premium Dimensiona automaticamente com base na demanda usando trabalhos pré-configurados que executam aplicativos sem atraso após estarem ociosos, é executado em instâncias mais poderosas e se conecta a redes virtuais.

Considere o plano Azure Functions Premium nas seguintes situações:

✔ Os aplicativos de funções executam continuamente ou quase continuamente.
✔ Você tem um número alto de execuções pequenas e uma fatura de execução alta, mas com poucos GB por segundo no plano de Consumo.
✔ Você precisa de mais opções de CPU ou memória do que é fornecido pelo plano de Consumo.
✔ O código precisa executar por mais tempo do que o tempo de execução máximo permitido no plano de Consumo.
✔ Você precisa de recursos que não estão disponíveis no plano de Consumo, como conectividade de rede virtual.
✔ Você deseja fornecer uma imagem Linux personalizada na qual executar suas funções.
Plano dedicado Execute suas funções em um plano do Serviço de Aplicativo com taxas regulares do Plano do Serviço de Aplicativo.

Melhor para cenários de execução longa em que o Durable Functions não pode ser usado. Considere um Plano do Serviço de Aplicativo nas seguintes situações:

✔ Você tem VMs subutilizadas que já estão executando outras instâncias do Serviço de Aplicativo.
✔ Dimensionamento e custos preditivos são necessários.

As tabelas de comparação neste artigo também incluem as opções de hospedagem a seguir, que fornecem a maior quantidade de controle e isolamento na qual executar seus aplicativos de funções.

Opção de hospedagem Detalhes
ASE O ASE (Ambiente do Serviço de Aplicativo) é um recurso do Serviço de Aplicativo do Azure que fornece um ambiente totalmente isolado e dedicado a executar com segurança os aplicativos do Serviço de Aplicativo em grande escala.

Os ASEs são apropriados para cargas de trabalho de aplicativos que exijam:

✔ Uma escala muito alta.
✔ Isolamento de computação completo e acesso seguro à rede.
✔ Alto uso de memória.
Kubernetes
(Direto ou
Azure Arc)
O Kubernetes fornece um ambiente totalmente isolado e dedicado em execução na plataforma Kubernetes.

O Kubernetes é apropriado para cargas de trabalho de aplicativos que exijam:
✔ Requisitos de hardware personalizados.
✔ Isolamento e acesso seguro à rede.
✔ Capacidade de executar em um ambiente híbrido ou de várias nuvens.
✔ Execução junto com os aplicativos e serviços existentes do Kubernetes.

As tabelas restantes neste artigo comparam os planos em vários recursos e comportamentos. Para uma comparação de custo entre planos de hospedagem dinâmicos (Consumo e Premium), confira a página de preços do Azure Functions. Para ver os preços das várias opções de plano Dedicado, confira a página de preços do Serviço de Aplicativo.

Sistema operacional/runtime

A tabela a seguir mostra o suporte ao sistema operacional e ao idioma dos planos de hospedagem.

Linux1
Somente código
Windows2
Somente código
Linux1,3
Contêiner do Docker
Plano de Consumo .NET Core 3.1
.NET 5.0
JavaScript
Java
Python
TypeScript
.NET Core 3.1
.NET 5.0
JavaScript
Java
PowerShell Core
TypeScript
Sem suporte
Plano Premium .NET Core 3.1
.NET 5.0
JavaScript
Java
Python
TypeScript
.NET Core
.NET 5.0
JavaScript
Java
PowerShell Core
TypeScript
.NET Core
Node.js
Java
PowerShell Core
Python
TypeScript
Plano dedicado .NET Core 3.1
.NET 5.0
JavaScript
Java
Python
TypeScript
.NET Core 3.1
.NET 5.0
JavaScript
Java
PowerShell Core
TypeScript
.NET Core 3.1
.NET 5.0
JavaScript
Java
PowerShell Core
Python
TypeScript
ASE .NET Core 3.1
.NET 5.0
JavaScript
Java
Python
TypeScript
.NET Core 3.1
.NET 5.0
JavaScript
Java
PowerShell Core
TypeScript
.NET Core 3.1
.NET 5.0
JavaScript
Java
PowerShell Core
Python
TypeScript
Kubernetes (direto) n/d N/D .NET Core 3.1
.NET 5.0
JavaScript
Java
PowerShell Core
Python
TypeScript
Azure Arc (versão prévia) .NET Core 3.1
.NET 5.0
JavaScript
Java
Python
TypeScript
N/D .NET Core 3.1
.NET 5.0
JavaScript
Java
PowerShell Core
Python
TypeScript

1 O Linux é o único sistema operacional compatível com a pilha de runtime do Python.
2 O Windows é o único sistema operacional compatível com a pilha de runtime do PowerShell.
3 o Linux é o único sistema operacional compatível com contêineres do Docker.

Duração do tempo limite do aplicativo de funções

A duração do tempo limite de um aplicativo de funções é definida pela propriedade functionTimeout no arquivo de projeto host.json. A seguinte tabela mostra os valores padrão e máximo em minutos para os planos e as diferentes versões de runtime:

Plano Versão de Runtime Padrão Máximo
Consumo 1.x 5 10
Consumo 2. x 5 10
Consumo 3.x 5 10
Premium 1.x Ilimitado Ilimitado
Premium 2. x 30 Ilimitado
Premium 3.x 30 Ilimitado
Serviço de Aplicativo 1.x Ilimitado Ilimitado
Serviço de Aplicativo 2. x 30 Ilimitado
Serviço de Aplicativo 3.x 30 Ilimitado

Observação

Independentemente da configuração de tempo limite do aplicativo de funções, 230 segundos é a quantidade de tempo máxima que uma função disparada por HTTP pode levar para responder a uma solicitação. Isso ocorre devido ao tempo limite de ociosidade padrão do Azure Load Balancer. Para tempos de processamento mais longos, considere usar o padrão assíncrono das Durable Functions ou adiar o trabalho real e retornar uma resposta imediata.

Escala

A tabela a seguir compara os comportamentos de dimensionamento dos vários planos de hospedagem.

Plano Escalar horizontalmente Número máximo de instâncias
Plano de Consumo Controlado por evento. Escale horizontalmente de forma automática, mesmo durante períodos de carga alta. A infraestrutura do Azure Functions escala automaticamente os recursos de CPU e memória adicionando outras instâncias do host do Functions de acordo com o número de eventos de gatilho de entrada. 200
Plano Premium Controlado por evento. Escale horizontalmente de forma automática, mesmo durante períodos de carga alta. A infraestrutura do Azure Functions escala automaticamente os recursos de CPU e memória adicionando outras instâncias do host do Functions de acordo com o número de eventos nos quais suas funções são disparadas. 100
Plano dedicado 1 Dimensionamento manual/automático 10-20
ASE 1 Dimensionamento manual/automático 100
Kubernetes Dimensionamento automático controlado por eventos para clusters Kubernetes usando KEDA. Varia de acordo com o cluster  

1 Para limites específicos para as várias opções do plano do Serviço de Aplicativo, confira os limites do plano do Serviço de Aplicativo.

Comportamento de inicialização a frio

Plano Detalhes
Plano de consumo Os aplicativos podem ser dimensionados para zero quando estiverem ociosos, o que significa que algumas solicitações podem ter latência adicional na inicialização. O plano de consumo tem algumas otimizações para ajudar a reduzir o tempo de inicialização a frio, incluindo a extração de funções de espaço reservado pré-configuradas que já têm o host de funções e os processos de linguagem em execução.
Plano Premium Instâncias perpetuamente quentes para evitar inicializações a frio.
Plano dedicado Ao executar em um plano Dedicado, o host do Functions pode ser executado continuamente, o que significa que a inicialização a frio não é um problema.
ASE Ao executar em um plano Dedicado, o host do Functions pode ser executado continuamente, o que significa que a inicialização a frio não é um problema.
Kubernetes Dependendo da configuração do KEDA, os aplicativos podem ser configurados para evitar uma inicialização a frio. Se for configurado para escalar para zero, uma inicialização a frio será experimentada para novos eventos.

Limites de serviço

Recurso Plano de Consumo Plano Premium Plano dedicado ASE Kubernetes
Duração padrão do tempo limite (min) 5 30 301 30 30
Duração máxima do tempo limite (min) 10 não associado7 não associado2 não associado não associado
Máximo de conexões de saída (por instância) 600 ativos (1.200 no total) não associado não associado não associado não associado
Tamanho máximo da solicitação (MB)3 100 100 100 100 Depende do cluster
Comprimento máximo da cadeia de caracteres de consulta3 4096 4096 4096 4096 Depende do cluster
Comprimento máximo da URL de solicitação3 8192 8192 8192 8192 Depende do cluster
ACU por instância 100 210-840 100-840 210-2508 Preços do AKS
Memória máxima (GB por instância) 1.5 3,5-14 1,75-14 3,5-14 Todos os nós são compatíveis
Contagem de instâncias máx. 200 1009 varia de acordo com a SKU10 10010 Depende do cluster
Aplicativos de funções por plano 100 100 não associado4 não associado não associado
Planos do Serviço de Aplicativo 100 por região 100 por grupo de recursos 100 por grupo de recursos - -
Armazenamento5 5 TB 250 GB 50-1.000 GB 1 TB n/a
Domínios personalizados por aplicativo 5006 500 500 500 n/a
domínio personalizado Suporte a SSL conexão SSL SNI não associada incluída conexões SSL SNI e 1 IP SSL não associadas incluídas conexões SSL SNI e 1 IP SSL não associadas incluídas conexões SSL SNI e 1 IP SSL não associadas incluídas n/a

1 Por padrão, o tempo limite do runtime do Functions 1.x em um plano do Serviço de Aplicativo não é associado.
2 Requer que o plano do Serviço de Aplicativo seja definido como Always On. Pagamento com taxas padrão.
3 Esses limites são definidos no host.
4 O número real de aplicativos de funções que você pode hospedar dependerá da atividade dos aplicativos, do tamanho das instâncias do computador e da utilização de recursos correspondente.
5 O limite de armazenamento é o tamanho total do conteúdo no armazenamento temporário em todos os aplicativos no mesmo plano do Serviço de Aplicativo. O plano de consumo usa os Arquivos do Azure para obter um armazenamento temporário.
6 Quando seu aplicativo de funções estiver hospedado em um Plano de consumo, somente a opção CNAME será compatível. Para obter aplicativos de funções em um plano Premium ou plano do Serviço de Aplicativo, você poderá mapear um domínio personalizado usando um CNAME ou registro A.
7 Garantido por até 60 minutos.
8 As funções de trabalho são funções que hospedam aplicativos de clientes. As funções de trabalho estão disponíveis em três tamanhos fixos: Um vCPU/3,5 GB de RAM, dois vCPUs/7 GB de RAM e quatro vCPUs/14 GB de RAM.
9 No momento, a execução no Linux em um plano Premium tem um limite de 20 instâncias.
10 Confira Limites do Serviço de Aplicativo para saber detalhes.

Recursos de rede

Recurso Plano de Consumo Plano Premium Plano dedicado ASE Kubernetes
Restrições de IP de entrada e acesso ao site privado ✅Sim ✅Sim ✅Sim ✅Sim ✅Sim
Integração de rede virtual ❌Não ✅Sim (Regional) ✅Sim (regional e gateway) ✅Sim ✅Sim
Gatilhos de rede virtual (não HTTP) ❌Não ✅Sim ✅Sim ✅Sim ✅Sim
Conexões híbridas (somente Windows) ❌Não ✅Sim ✅Sim ✅Sim ✅Sim
Restrições de IP de saída ❌Não ✅Sim ✅Sim ✅Sim ✅Sim

Cobrança

Plano Detalhes
Plano de Consumo Você paga apenas pelo tempo durante o qual suas funções são executadas. A cobrança baseia-se no número de execuções, no tempo de execução e na memória usada.
Plano Premium O plano Premium é baseado no número de segundos de núcleo e na memória usada nas instâncias necessárias e pré-aquecidas. Pelo menos uma instância por plano deve ser mantida quente em todos os momentos. Esse plano fornece o preço mais previsível.
Plano dedicado Você paga o mesmo por aplicativos de funções em um plano do Serviço de Aplicativo que pagaria por outros recursos do Serviço de Aplicativo, como aplicativos Web.
ASE (Ambiente do Serviço de Aplicativo) Existe uma taxa mensal fixa para um ASE que paga pela infraestrutura e não se altera com o tamanho do ASE. Também há um custo por vCPU do plano do Serviço de Aplicativo. Todos os aplicativos hospedados no ASE estão em um SKU de preços Isolado.
Kubernetes Você paga apenas os custos do cluster Kubernetes; nenhuma cobrança adicional para o Functions. Seu aplicativo de funções é executado como uma carga de trabalho de aplicativo sobre o cluster, assim como um aplicativo normal.

Próximas etapas