Opções de hospedagem do Azure Functions

Ao criar um aplicativo de função no Azure, você deve escolher um plano de hospedagem para seu aplicativo. Há três planos básicos de hospedagem do Azure Functions fornecidos pelo Azure Functions: plano de consumo, plano Premium e plano dedicado (Serviço de Aplicativo). Esses planos de hospedagem são facilitados pela infraestrutura do Serviço de Aplicativo do Azure e estão geralmente disponíveis (GA) em máquinas virtuais Linux e Windows.

O plano de hospedagem do Azure Functions escolhido dita os seguintes comportamentos:

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

Além da hospedagem do Azure Functions, você também pode hospedar aplicativos de função em contêineres que podem ser implantados em clusters Kubernetes ou em Aplicativos de Contêiner do Azure. Se você optar por hospedar suas funções em um cluster Kubernetes, considere usar um cluster Kubernetes habilitado para Azure Arc. Para saber mais sobre como implantar aplicativos de contêiner personalizados, consulte Aplicativos de contêiner do Azure hospedando o Azure Functions.

Este artigo fornece uma comparação detalhada entre os vários planos de hospedagem, incluindo opções de hospedagem baseadas em contêiner.

Nota

A hospedagem de contêineres do Azure Functions em clusters Kubernetes habilitados para Azure Arc e Aplicativos de Contêiner do Azure está atualmente em visualização.

Visão geral dos planos

A seguir está um resumo dos benefícios dos três principais planos de hospedagem do Azure Functions:

Planear Benefícios
Plano de consumo Dimensione automaticamente e pague apenas pelos recursos de computação quando as suas funções estiverem em execução

No Plano de consumo, as instâncias do anfitrião das Funções são adicionadas e removidas dinamicamente com base no número de eventos de entrada.

✔ Plano de hospedagem padrão.
✔ Pague apenas quando as suas funções estiverem em execução.
✔ Dimensiona automaticamente, mesmo durante períodos de carga elevada.
Plano Premium Dimensiona automaticamente com base na demanda usando trabalhadores pré-aquecidos, que executam aplicativos sem atraso depois de ficarem ociosos, são executados em instâncias mais poderosas e se conectam a redes virtuais.

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

✔ Seus aplicativos funcionais são executados continuamente ou quase continuamente.
✔ Você tem um alto número de pequenas execuções e uma alta conta de execução, mas poucos segundos de GB no plano de consumo.
✔ Você precisa de mais opções de CPU ou memória do que as fornecidas pelo plano de consumo.
✔ Seu código precisa ser executado por mais tempo do que o tempo máximo de execução 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 para executar suas funções.
Plano dedicado Execute suas funções dentro de um plano do Serviço de Aplicativo com as taxas regulares do plano do Serviço de Aplicativo.

Ideal para cenários de longa duração em que as funções duráveis não podem ser usadas. Considere um plano do Serviço de Aplicativo nas seguintes situações:

✔ Você tem VMs existentes e subutilizadas que já estão executando outras instâncias do Serviço de Aplicativo.
✔ É necessário dimensionamento e custos preditivos.

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

Opção de hospedagem Detalhes
ASE O Ambiente do Serviço de Aplicativo (ASE) é um recurso do Serviço de Aplicativo que fornece um ambiente totalmente isolado e dedicado para a execução segura de aplicativos do Serviço de Aplicativo em alta escala.

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

✔ Escala muito alta.
✔ Isolamento total de computação e acesso seguro à rede.
✔ Alto uso de memória.
Aplicativos de contêiner do Azure Os Aplicativos de Contêiner do Azure são um ambiente totalmente gerenciado que permite executar microsserviços e aplicativos em contêineres em uma plataforma sem servidor. Os Aplicativos de Contêiner do Azure permitem que você execute suas funções com o poder do Serviço Kubernetes (AKS) do Azure subjacente, removendo a complexidade de ter que trabalhar com APIs do Kubernetes.
Kubernetes
(Direto ou
Azure Arc)
O Kubernetes fornece um ambiente totalmente isolado e dedicado executado sobre a plataforma Kubernetes.

O Kubernetes é apropriado para cargas de trabalho de aplicativos que exigem:
✔ Requisitos de hardware personalizados.
✔ Isolamento e acesso seguro à rede.
✔ Capacidade de execução em ambiente híbrido ou multi-cloud.
✔ Execute junto com aplicativos e serviços Kubernetes existentes.

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

Sistema operacional/tempo de execução

A tabela a seguir mostra o sistema operacional e o suporte a idiomas para os planos de hospedagem.

Linux1,2
somente código
Somente código do Windows Linux1,2,3
Contêiner do Docker
Plano de consumo C#
JavaScript
Java
Python
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
Sem suporte
Plano Premium C#
JavaScript
Java
Python
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
Python
TypeScript
Plano dedicado C#
JavaScript
Java
Python
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
Python
TypeScript
ASE C#
JavaScript
Java
Python
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
Python
TypeScript
Kubernetes (direto) n/d n/d C#
JavaScript
Java
PowerShell Core
Python
TypeScript
Azure Arc (Pré-visualização) C#
JavaScript
Java
Python
TypeScript
n/d C#
JavaScript
Java
PowerShell Core
Python
TypeScript

1 Linux é o único sistema operacional suportado para a pilha de tempo de execução do Python.
2 O suporte do PowerShell no Linux está atualmente em visualização.
3 Linux é o único sistema operacional suportado para contêineres Docker.

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

A duração do tempo limite para funções em um aplicativo de função é definida pela functionTimeout propriedade no arquivo de projeto host.json . Esta propriedade aplica-se especificamente a execuções de funções. Depois que o gatilho inicia a execução da função, a função precisa retornar/responder dentro da duração do tempo limite. Para obter mais informações, consulte Melhorar o desempenho e a confiabilidade do Azure Functions.

A tabela a seguir mostra os valores padrão e máximo (em minutos) para planos específicos:

Planear Predefinido Máximo1
Plano de consumo 5 10
Plano Premium 302 Ilimitada3
Plano dedicado 302 Ilimitada3

1 Independentemente da configuração de tempo limite do aplicativo de função, 230 segundos é a quantidade máxima de tempo que uma função acionada por HTTP pode levar para responder a uma solicitação. Isso ocorre devido ao tempo limite ocioso padrão do Balanceador de Carga do Azure. Para tempos de processamento mais longos, considere usar o padrão assíncrono de Funções Duráveis ou adie o trabalho real e retorne uma resposta imediata.
2 O tempo limite padrão para a versão 1.x do tempo de execução do Functions é ilimitado.
3 Garantido até 60 minutos. Patches de SO e tempo de execução, patches de vulnerabilidade e dimensionamento em comportamentos ainda podem cancelar execuções de funções, portanto, certifique-se de escrever funções robustas.

Escala

A tabela a seguir compara os comportamentos de dimensionamento dos vários planos de hospedagem.
As instâncias máximas são dadas por aplicativo por função (Consumo) ou por plano (Premium/Dedicado), salvo indicação em contrário.

Planear Aumentar horizontalmente Máximo de # instâncias
Plano de consumo Impulsionado por eventos. Dimensione automaticamente, mesmo durante períodos de carga elevada. A infraestrutura do Azure Functions dimensiona recursos de CPU e memória adicionando instâncias adicionais do host do Functions, com base no número de eventos de gatilho de entrada. Janelas: 200
Linux: 1001
Plano Premium Impulsionado por eventos. Dimensione automaticamente, mesmo durante períodos de carga elevada. A infraestrutura do Azure Functions dimensiona recursos de CPU e memória adicionando instâncias adicionais do host do Functions, com base no número de eventos nos quais suas funções são acionadas. Janelas: 100
Linux: 20-1002
Plano dedicado3 Manual/dimensionamento automático 10-30
ASE3 Manual/dimensionamento automático 100
Kubernetes Dimensionamento automático controlado por eventos para clusters Kubernetes usando KEDA. Varia de acordo com o cluster

1 Durante a expansão, atualmente há um limite de 500 instâncias por assinatura por hora para aplicativos Linux em um plano de consumo.
2 Em algumas regiões, os aplicativos Linux em um plano Premium podem ser dimensionados para 100 instâncias. Para obter mais informações, consulte o artigo do plano Premium.
3 Para obter limites específicos para as várias opções do plano do Serviço de Aplicativo, consulte os limites do plano do Serviço de Aplicativo.

Comportamento de arranque a frio

Planear Detalhes
Plano de consumo Os aplicativos podem ser dimensionados para zero quando 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 diminuir o tempo de inicialização a frio, incluindo a extração de funções de espaço reservado pré-aquecidas que já têm o host da função e os processos de linguagem em execução.
Plano Premium Instâncias perpetuamente quentes para evitar qualquer arranque a frio.
Plano dedicado Ao executar em um plano dedicado, o host do Functions pode ser executado continuamente, o que significa que o arranque a frio não é realmente um problema.
ASE Ao executar em um plano dedicado, o host do Functions pode ser executado continuamente, o que significa que o arranque a frio não é realmente um problema.
Kubernetes Dependendo da configuração do KEDA, os aplicativos podem ser configurados para evitar um arranque a frio. Se configurado para ser dimensionado para zero, um arranque a frio é experimentado para novos eventos.

Limites de serviço

Resource Plano de consumo Plano Premium Plano dedicado ASE Kubernetes
Duração do tempo limite padrão (min) 5 30 301 30 30
Duração máxima do tempo limite (min) 10 ilimitado 7 ilimitado 2 ilimitado ilimitado
Máximo de conexões de saída (por instância) 600 ativos (1200 no total) ilimitado ilimitado ilimitado ilimitado
Tamanho máximo da solicitação (MB)3 100 100 100 100 Depende do cluster
Comprimento máximo dacadeia de caracteres de consulta 3 4096 4096 4096 4096 Depende do cluster
Comprimento máximo do URL desolicitação 3 8192 8192 8192 8192 Depende do cluster
ACU por instância 100 210-840 100-840 210-2508 Preços AKS
Memória máxima (GB por instância) 1.5 3.5-14 1.75-14 3.5 - 14 Qualquer nó é suportado
Contagem máxima de instâncias (Windows/Linux) 200/100 100/20 varia por SKU9 1009 Depende do cluster
Funções aplicações por plano11 100 100 ilimitado 4 ilimitado ilimitado
Planos do Serviço de Aplicações 100 por região 100 por grupo de recursos 100 por grupo de recursos - -
Slots de implantação por aplicativo10 2 3 1-209 20 n/d
Armazenamento5 5 GB 250 GB 50-1000 GB 1 TB n/d
Domínios personalizados por aplicativo 5006 500 500 500 n/d
Suporte SSL de domínio personalizado conexão SNI SSL não limitada incluída SNI SSL não limitado e 1 conexões IP SSL incluídas SNI SSL não limitado e 1 conexões IP SSL incluídas SNI SSL não limitado e 1 conexões IP SSL incluídas n/d

1 Por padrão, o tempo limite para o tempo de execução do Functions 1.x em um plano do Serviço de Aplicativo é ilimitado.
2 Requer que o plano do Serviço de Aplicativo esteja definido como Sempre Ativado. Pague à taxa normal.
3 Estes limites são definidos no anfitrião.
4 O número real de aplicativos de função que você pode hospedar depende da atividade dos aplicativos, do tamanho das instâncias da máquina 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 armazenamento temporário.
6 Quando seu aplicativo de função é hospedado em um plano de consumo, apenas a opção CNAME é suportada. Para aplicativos de função em um plano Premium ou um plano do Serviço de Aplicativo, você pode mapear um domínio personalizado usando um registro CNAME ou A.
7 Garantido até 60 minutos.
8 Os trabalhadores são funções que hospedam aplicativos do cliente. Os trabalhadores estão disponíveis em três tamanhos fixos: Uma vCPU/3,5 GB de RAM; Dois vCPU/7 GB de RAM; Quatro vCPU/14 GB de RAM.
9 Consulte Limites do Serviço de Aplicativo para obter detalhes.
10 Incluindo a faixa horária de produção.
11 Atualmente, há um limite de 5000 aplicativos de função em uma determinada assinatura.

Limitações para criar novos aplicativos de função em um grupo de recursos existente

Em alguns casos, ao tentar criar um novo plano de hospedagem para seu aplicativo de função em um grupo de recursos existente, você pode receber um dos seguintes erros:

  • O nível de preços não é permitido neste grupo de recursos
  • <> SKU_name trabalhadores não estão disponíveis no grupo <de recursos resource_group_name>

Isso pode acontecer quando as seguintes condições são atendidas:

  • Você cria um aplicativo de função em um grupo de recursos existente que já continha outro aplicativo de função ou aplicativo Web. Por exemplo, os aplicativos de consumo do Linux não são suportados no mesmo grupo de recursos que os planos Linux Dedicated ou Linux Premium.
  • Seu novo aplicativo de função é criado na mesma região do aplicativo anterior.
  • A aplicação anterior é, de alguma forma, incompatível com a sua nova aplicação. Isso pode acontecer entre SKUs, sistemas operacionais ou devido a outros recursos no nível da plataforma, como suporte à zona de disponibilidade.

A razão pela qual isso acontece é devido à forma como os planos de aplicativo de função e aplicativo Web são mapeados para diferentes pools de recursos ao serem criados. SKUs diferentes exigem um conjunto diferente de recursos de infraestrutura. Quando você cria um aplicativo em um grupo de recursos, esse grupo de recursos é mapeado e atribuído a um pool específico de recursos. Se você tentar criar outro plano nesse grupo de recursos e o pool mapeado não tiver os recursos necessários, esse erro ocorrerá.

Quando esse erro ocorrer, em vez disso, crie seu aplicativo de função e plano de hospedagem em um novo grupo de recursos.

Funcionalidades de rede

Funcionalidade Plano de consumo Plano Premium Plano dedicado ASE
Restrições de IP de entrada ✅Sim ✅Sim ✅Sim ✅Sim
Pontos de extremidade privados de entrada ❌Não ✅Sim ✅Sim ✅Sim
Integração da rede virtual ❌Não ✅Sim (Regional) ✅Sim (Regional e Gateway) ✅Sim
Gatilhos de rede virtual (não HTTP) ❌Não ✅Sim ✅Sim ✅Sim
Conexões híbridas (somente Windows) ❌Não ✅Sim ✅Sim ✅Sim
Restrições de IP de saída ❌Não ✅Sim ✅Sim ✅Sim

Faturação

Planear Detalhes
Plano de consumo Pague apenas pelo tempo de execução das suas funções. A faturação baseia-se no número de execuções, no tempo de execução e na memória utilizada.
Plano Premium O plano Premium é baseado no número de segundos principais e na memória usada em instâncias necessárias e pré-aquecidas. Pelo menos uma instância por plano deve ser sempre mantida aquecida. Este plano fornece os preços mais previsíveis.
Plano dedicado Você paga o mesmo por aplicativos funcionais em um Plano do Serviço de Aplicativo como pagaria por outros recursos do Serviço de Aplicativo, como aplicativos Web.
Ambiente do Serviço de Aplicativo (ASE) Há uma taxa mensal fixa para um ASE que paga pela infraestrutura e não muda com o tamanho do ASE. Há também um custo por vCPU do plano do Serviço de Aplicativo. Todas as aplicações alojadas num ASE estão na SKU de preços Isolada.
Kubernetes Você paga apenas os custos do seu cluster Kubernetes; sem cobrança adicional para Funções. Seu aplicativo de função é executado como uma carga de trabalho de aplicativo sobre o cluster, assim como um aplicativo normal.

Próximos passos