Compartilhar via


Opções de hospedagem do Azure Functions

Ao criar um aplicativo de funções no Azure, você precisa escolher uma opção de hospedagem para o aplicativo. O Azure oferece estas opções de hospedagem para seu código de função:

Opção de hospedagem Serviço Disponibilidade Suporte a contêiner
Plano de Consumo Azure Functions GA (em disponibilidade geral) Nenhum
Plano de Consumo Flexível Azure Functions Visualizar Nenhum
Plano Premium Azure Functions GA Linux
Plano dedicado Azure Functions GA Linux
Aplicativos de Contêiner Aplicativos de Contêiner do Azure GA Linux

As opções de hospedagem do Azure Functions são facilitadas pela infraestrutura do Serviço de Aplicativo do Azure em máquinas virtuais do Linux e do Windows. A opção de hospedagem que você escolher determinará 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.
  • Suporte para contêineres do Linux.

O plano escolhido também afeta os custos para executar seu código de função. Para mais informações, consulte Faturamento.

Este artigo mostra uma comparação detalhada entre as várias opções de hospedagem. Para saber mais sobre como executar e gerenciar seu código de função em contêineres do Linux, confira Suporte a contêineres do Linux no Azure Functions.

Visão geral dos planos

Este é um resumo dos benefícios das várias opções de hospedagem do Azure Functions:

Opção Benefícios
Plano de consumo Pague pelos recursos de computação somente quando suas funções estiverem em execução (pagamento conforme o uso) com escala automática.

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 que fornece hospedagem verdadeiramente sem servidor.
✔ Pague apenas quando suas funções forem executadas.
✔ Escala horizontalmente de maneira automática, mesmo durante períodos de carga alta.
Plano de Consumo Flexível Obtenha alta escalabilidade com opções de computação, rede virtual e cobrança de pagamento conforme o uso.

No plano de Consumo Flexível, as instâncias do host do Functions são adicionadas e removidas dinamicamente com base na simultaneidade por instância configurada e no número de eventos de entrada.

✔ Reduza as inicializações a frio especificando várias instâncias pré-provisionadas (sempre prontas).
✔ Dá suporte à rede virtual para maior segurança.
✔ Pague apenas quando suas funções forem executadas.
✔ Escala horizontalmente de maneira automática, mesmo durante períodos de carga alta.
Plano Premium É escalado automaticamente de acordo com a demanda, por meio de trabalhos pré-ativados que executam aplicativos sem atraso após estarem ociosos, é executado em instâncias com maior potência 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ê deseja ter mais controle sobre suas instâncias e implantar vários aplicativos de funções no mesmo plano com escala orientada por eventos.
✔ 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 são fornecidas pelos planos 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 conectividade de rede virtual.
✔ Você deseja fornecer uma imagem do Linux personalizada na qual suas funções serão executadas.
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 máquinas virtuais subutilizadas que já estão executando outras instâncias do Serviço de Aplicativo.
✔ Você precisa ter uma cobrança totalmente previsível ou escalonar manualmente as instâncias.
✔ Você quer executar vários aplicativos Web e aplicativos de funções no mesmo plano
✔ Você precisa de acesso a opções maiores de tamanho da computação.
✔ Isolamento de computação completo e acesso seguro à rede fornecidos por um ASE (Ambiente do Serviço de Aplicativo).
✔ Muito uso de memória e alta escala (ASE).
Aplicativos de Contêiner Crie e implante aplicativos de funções em contêineres em um ambiente totalmente gerenciado hospedado pelos Aplicativos de Contêiner do Azure.

Use o modelo de programação do Azure Functions para criar aplicativos de funções nativos da nuvem, sem servidor e controlados por eventos de build. Execute suas funções junto com outros microsserviços, APIs, sites e fluxos de trabalho como programas hospedados em contêiner. Considere a possibilidade de hospedar suas funções em Aplicativos de Contêiner nas seguintes situações:

✔ Você quer empacotar bibliotecas personalizadas com seu código de função para dar suporte a aplicativos de linha de negócios.
✔ Você precisa migrar a execução de código de aplicativos locais ou herdados para microsserviços nativos de nuvem em execução em contêineres.
✔ Quando quiser evitar a sobrecarga e a complexidade do gerenciamento de clusters do Kubernetes e da computação dedicada.
✔ Suas funções precisam de potência de processamento de última geração fornecida por recursos de computação de GPU dedicados.

As tabelas restantes deste artigo comparam as opções de hospedagem com base em vários recursos e comportamentos.

Suporte do sistema operacional

Esta tabela mostra o suporte do sistema operacional para as opções de hospedagem.

Hosting Implantação do Linux1 Implantação do Windows2
Plano de Consumo ✅ Somente código
❌ Contêiner (sem suporte)
✅ Somente código
Plano de Consumo Flexível ✅ Somente código
❌ Contêiner (sem suporte)
❌ Sem suporte
Plano Premium ✅ Somente código
✅ Contêiner
✅ Somente código
Plano dedicado ✅ Somente código
✅ Contêiner
✅ Somente código
Aplicativos de Contêiner ✅ Somente contêiner ❌ Sem suporte
  1. O Linux é o único sistema operacional compatível com a pilha de runtime do Python.
  2. As implantações do Windows são de somente código. No momento, o Functions não dá suporte a contêineres do Windows.

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

A duração do tempo limite para funções em um aplicativo de funções é definida pela propriedade functionTimeout no arquivo de projeto host.json. Essa propriedade se aplica especificamente a execuções de função. 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 evitar tempos limite, é importante escrever funções robustas. Para saber mais, confira Melhorar o desempenho e a confiabilidade do Azure Functions.

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

Plano Padrão Máximo1
Plano de Consumo 5 10
Plano de Consumo Flexível 30 Não associado2
Plano Premium 304 Não associado2
Plano dedicado 304 Não associado3
Aplicativos de Contêiner 30 Não associado4
  1. 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.
  2. Não há nenhum tempo limite máximo de execução imposto. No entanto, o período de cortesia dado a uma execução de função é de 60 minutos durante a redução horizontal para os planos de Consumo Flex e Premium, e um período de cortesia de 10 minutos é dado durante as atualizações de plataforma.
  3. Exige que o plano do Serviço de Aplicativo seja definido como Always On. Um período de cortesia de 10 minutos é dado durante as atualizações de plataforma.
  4. O tempo limite padrão para a versão 1.x do tempo de execução de host do Functions é não associado.
  5. Quando o número mínimo de réplicas for definido como zero, o tempo limite padrão dependerá dos gatilhos específicos usados no aplicativo.

Suporte ao idioma

Para obter detalhes sobre o suporte à atual pilha de linguagens nativas do Functions, confira Linguagens com suporte no Azure Functions.

Escala

A tabela a seguir compara os comportamentos de dimensionamento dos vários planos de hospedagem.
As instâncias máximas são fornecidas por aplicativo por função (Consumo) ou por plano (Premium/Dedicado), a menos que indicado de outra forma.

Plano Escalar horizontalmente Número máximo de instâncias
Plano de Consumo Controlado por evento. É escalado horizontalmente de maneira automática, mesmo durante períodos de carga alta. A infraestrutura do Functions escala automaticamente os recursos de CPU e memória adicionando mais instâncias do host do Functions de acordo com o número de eventos de gatilho de entrada. Windows: 200
Linux: 1001
Plano de Consumo Flexível Escala por função. As decisões de escala orientadas a eventos são calculadas por função, o que fornece uma forma mais determinística de escalar as funções no seu aplicativo. Com exceção do HTTP, do Armazenamento de Blobs (Grade de Eventos) e do Durable Functions, todos os outros tipos de gatilho de função no aplicativo são escalados em instâncias independentes. Todos os gatilhos HTTP no aplicativo são escalados juntos como um grupo nas mesmas instâncias, assim como todos os gatilhos do Armazenamento de Blobs (Grade de Eventos). Todos os gatilhos do Durable Functions também compartilham instâncias e são escalados juntos. Limitado apenas pelo uso total de memória de todas as instâncias em uma determinada região. Para obter mais informações, consulte memória da Instância.
Plano Premium Controlado por evento. Escale horizontalmente de forma automática, mesmo durante períodos de carga alta. A infraestrutura do Azure Functions escala os recursos de CPU e memória adicionando mais instâncias do host do Functions de acordo com o número de eventos nos quais suas funções são disparadas. Windows: 100
Linux: 20-1002
Plano dedicado3 Dimensionamento manual/automático 10 a 30
100 (ASE)
Aplicativos de Contêiner Controlado por evento. Escale horizontalmente de forma automática, mesmo durante períodos de carga alta. A infraestrutura do Azure Functions escala os recursos de CPU e memória adicionando mais instâncias do host do Functions de acordo com o número de eventos nos quais suas funções são disparadas. 300-10004
  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 escalados para 100 instâncias. Para mais informações, confira o artigo do plano Premium.
  3. Para obter limites específicos para as várias opções de plano do Serviço de Aplicativo, confira os limites do plano do Serviço de Aplicativo.
  4. Em Aplicativos de Contêiner, o padrão é 10 instâncias, mas você pode definir o número máximo de réplicas, que tem um máximo geral de 1000. Essa configuração é respeitada desde que haja cota de núcleos suficiente disponível. Ao criar seu aplicativo de funções no portal do Azure, você está limitado a 300 instâncias.

Comportamento de inicialização a frio

Plano Detalhes
Plano de Consumo Os aplicativos podem ser escalados para zero quando ociosos, o que significa que algumas solicitações podem ter mais latência 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é-ativadas que já têm o host e os processos de linguagem em execução.
Plano de Consumo Flexível Dá suporte a instâncias sempre prontas para reduzir o atraso ao provisionar novas instâncias.
Plano Premium Dá suporte a instâncias sempre prontas para evitar inicializações a frio, permitindo que você mantenha uma ou mais instâncias permanentemente ativas.
Plano dedicado Durante a execução em um plano Dedicado, o host do Functions pode ser executado continuamente em um número prescrito de instâncias, o que significa que a inicialização a frio não é realmente um problema.
Aplicativos de Contêiner Depende do número mínimo de réplicas:
• Quando definido como zero: os aplicativos podem ser escalados para zero quando ociosos e algumas solicitações podem ter mais latência na inicialização.
• Quando definido como um ou mais: o processo de host é executado continuamente, o que significa que o início frio não é um problema.

Limites de serviço

Recurso Plano de Consumo Plano de consumo Flex13 Plano Premium Plano Dedicado/ASE Aplicativos de Contêiner
Duração padrão do tempo limite (min) 5 30 30 301 3016
Duração máxima do tempo limite (min) 10 8 não associados 8 não associados não associado2 não associado17
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 100
Comprimento máximo da cadeia de caracteres de consulta3 4096 4096 4096 4096 4096
Comprimento máximo da URL de solicitação3 8192 8192 8192 8192 8192
ACU por instância 100 varia 210-840 100-840/210-2509 varia
Memória máxima (GB por instância) 1.5 414 3,5-14 1,75-14/3,5-14 varia
Contagem de instâncias máxima (Windows/Linux) 200/100 1000 15 100/20 varia de acordo com o SKU/10010 10-30018
Aplicativos de funções por plano12 100 100 100 não associado4 não associado4
Planos do Serviço de Aplicativo 100 por região N/D 100 por grupo de recursos 100 por grupo de recursos N/D
Slots de implantação por aplicativo11 2 N/D 3 1-2010 sem suporte
Armazenamento (temporário)5 0.5 GB 0,8 GB 21-140 GB 11-140 GB N/D
Armazenamento (persistente) 1 GB6 0 GB6 250 GB 10-1000 GB10 N/D
Domínios personalizados por aplicativo 5007 500 500 500 sem suporte
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 sem suporte

Observações sobre os limites do serviço:

  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. Exige que o plano do Serviço de Aplicativo seja definido como Always On. Pagamento com taxas padrão. Um período de cortesia de 10 minutos é dado durante as atualizações de plataforma.
  3. Esses limites são definidos no host.
  4. O número real de aplicativos de funções que você pode hospedar depende 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. Para planos de consumo no Linux, o armazenamento atual é de 1,5 GB.
  6. O plano de consumo usa um compartilhamento dos Arquivos do Azure para armazenamento persistente. Ao fornecer o próprio compartilhamento dos Arquivos do Azure, os limites de tamanho do compartilhamento específicos dependem da conta de armazenamento definida para WEBSITE_CONTENTAZUREFILECONNECTIONSTRING. No Linux, você deve montar explicitamente seu próprio compartilhamento dos Arquivos do Azure para planos de consumo e planos de consumo Flex.
  7. 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.
  8. Não há nenhum tempo limite máximo de execução imposto. No entanto, o período de cortesia dado a uma execução de função é de 60 minutos durante a redução horizontal e de 10 minutos durante as atualizações de plataforma.
  9. As funções de trabalho são funções que hospedam aplicativos cliente. 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.
  10. Confira Limites do Serviço de Aplicativo para saber detalhes.
  11. Incluindo o slot de produção.
  12. Atualmente, há um limite de 5.000 aplicativos de funções em uma determinada assinatura.
  13. O plano de Consumo Flex está atualmente em versão preliminar.
  14. Atualmente, os tamanhos da instância do plano de Consumo Flexível são definidos como 2.048 MB ou 4.096 MB. Para obter mais informações, consulte memória da Instância.
  15. Durante a versão prévia, o plano de Consumo Flexível tem uma cota de assinatura regional que limita o uso total de memória de todas as instâncias em uma determinada região. Para obter mais informações, consulte memória da Instância.
  16. Quando o número mínimo de réplicas for definido como zero, o tempo limite padrão dependerá dos gatilhos específicos usados no aplicativo.
  17. Quando o número mínimo de réplicas for definido como um ou mais.
  18. Em Aplicativos de Contêiner, você pode definir o número máximo de réplicas, o que é respeitado desde que haja cota de núcleos suficiente disponível.

Recursos de rede

Recurso Plano de Consumo Plano de Consumo Flexível Plano Premium Plano Dedicado/ASE Aplicativos de Contêiner*
Restrições de IP de entrada ✅Sim ✅Sim ✅Sim ✅Sim ✅Sim
Pontos de extremidade privados de entrada ❌Não ✅Sim ✅Sim ✅Sim ❌Não
Integração de rede virtual ❌Não ✅Sim (Regional) ✅Sim (Regional) ✅Sim (regional e gateway) ✅Sim
Gatilhos de rede virtual (não HTTP) ❌Não ✅Sim ✅Sim ✅Sim ✅Sim
Conexões híbridas (somente Windows) ❌Não ❌ Não ✅Sim ✅Sim ❌Não
Restrições de IP de saída ❌Não ✅Sim ✅Sim ✅Sim ✅Sim

*Para obter mais informações, consulte Rede no ambiente de Aplicativos de Contêiner do Azure.

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 de Consumo Flexível A cobrança é baseada no número de execuções, na memória das instâncias quando elas estão executando funções ativamente, além do custo das instâncias sempre prontas. Para obter mais informações, confira Cobrança do plano de Consumo Flexível.
Plano Premium O plano Premium é baseado no número de núcleos por segundo e na memória usada nas instâncias necessárias e pré-ativadas. Pelo menos uma instância por plano deve ser mantida aquecida 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.

Para um ASE, há uma taxa mensal fixa que paga pela infraestrutura e não é alterada com o tamanho do ambiente. 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. Para saber mais, confira o artigo de visão geral do ASE.
Aplicativos de Contêiner A cobrança nos Aplicativos de Contêiner do Azure é baseada no tipo de plano. Para saber mais, confira Cobrança em Aplicativos de Contêiner do Azure.

Para ver uma comparação de custo direto entre os planos de hospedagem dinâmicos (Consumo, Consumo Flexível 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. Para ver os preços de hospedagem dos Aplicativos de Contêiner, confira Preços dos Aplicativos de Contêiner do Azure.

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

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

  • O tipo de preço não é permitido neste grupo de recursos
  • Os trabalhos do <SKU_name> 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ções em um grupo de recursos existente que já contém outro aplicativo de funções ou aplicativo Web. Por exemplo, não há suporte para os aplicativos de Consumo em Linux no mesmo grupo de recursos dos planos Dedicado em Linux ou Premium em Linux.
  • O novo aplicativo de funções é criado na mesma região que o aplicativo anterior.
  • O aplicativo anterior é incompatível com o novo aplicativo em algum aspecto. Esse erro pode ocorrer entre SKUs, sistemas operacionais ou devido a outros recursos de nível da plataforma, como o suporte à zona de disponibilidade.

O motivo disso é a forma como os planos de aplicativos Web e de aplicativos de funções são mapeados para diferentes pools de recursos ao serem criados. SKUs diferentes exigem um conjunto diferente de funcionalidades de infraestrutura. Quando você cria um aplicativo em um grupo de recursos, esse grupo de recursos é mapeado e atribuído a um pool de recursos específico. Se você 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, crie o aplicativo de funções e o plano de hospedagem em um novo grupo de recursos.

Próximas etapas