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 com suporte na 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 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 Ilimitado2
Plano Premium 303 Ilimitado3
Plano dedicado 304 Ilimitado3

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 Em um plano de Consumo Flexível, o host não impõe um limite de tempo de execução. Porém, no momento, não há nenhuma garantia, porque a plataforma pode precisar encerrar suas instâncias durante a redução horizontal e as implantações ou para aplicar atualizações.
3 O tempo limite padrão para a versão 1.x do tempo de execução do Functions é ilimitado.
4 Garantido por até 60 minutos. A correção do sistema operacional e do runtime, a correção de vulnerabilidades e a escala de comportamentos ainda podem cancelar as execuções de funções, portanto, certifique-se de gravar funções robustas .

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)

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 dimensionadas para 100 instâncias. Para mais informações, confira o artigo do plano Premium.
3 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 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 reduzir 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 de funções 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.

Limites de serviço

Recurso Plano de Consumo Plano de Consumo Flexível12 Plano Premium Plano Dedicado/ASE
Duração padrão do tempo limite (min) 5 30 30 301
Duração máxima do tempo limite (min) 10 não associado15 não associado7 não associado2
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
Tamanho máximo da solicitação (MB)3 100 100 100 100
Comprimento máximo da cadeia de caracteres de consulta3 4096 4096 4096 4096
Comprimento máximo da URL de solicitação3 8192 8192 8192 8192
ACU por instância 100 varia 210-840 100-840/210-2508
Memória máxima (GB por instância) 1.5 413 3,5-14 1,75-14/3,5-14
Contagem de instâncias máxima (Windows/Linux) 200/100 1.000 14 100/20 varia de acordo com a SKU/1009
Aplicativos de Funções por plano11 100 100 100 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
Slots de implantação por aplicativo10 2 N/D 3 1-209
Armazenamento5 5 GB 250 GB 250 GB 50-1.000 GB
Domínios personalizados por aplicativo 5006 500 500 500
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

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.
  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. 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 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.
  9. Confira Limites do Serviço de Aplicativo para saber detalhes.
  10. Incluindo o slot de produção.
  11. Atualmente, há um limite de 5.000 aplicativos de funções em uma determinada assinatura.
  12. O plano de Consumo Flex está atualmente em versão preliminar.
  13. 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.
  14. 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.
  15. Em um plano de Consumo Flexível, o host não impõe um limite de tempo de execução. Porém, no momento, não há nenhuma garantia, porque a plataforma pode precisar encerrar suas instâncias durante a redução horizontal e as implantações ou para aplicar atualizações.

Recursos de rede

Recurso Plano de Consumo Plano de Consumo Flexível 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 de rede virtual ❌ Não ✅ Sim (Regional) ✅ Sim (Regional) ✅ Sim (regional e gateway)
Gatilhos de rede virtual (não HTTP) ❌ Não ✅ Sim ✅ Sim ✅ Sim
Conexões híbridas (somente Windows) ❌ Não ❌ Não ✅ Sim ✅ Sim
Restrições de IP de saída ❌ Não ✅ 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 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.

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