Comparar as opções de hospedagem do Azure Functions

Concluído

Ao criar um aplicativo de funções no Azure, você precisa escolher um plano 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 GA 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

A infraestrutura do Serviço de Aplicativo do Azure facilita a hospedagem do Azure Functions em máquinas virtuais Linux e 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.

Visão geral dos Planos

A seguir está um resumo dos benefícios das várias opções de hospedagem:

Plano de consumo

O plano de Consumo é o plano de hospedagem padrão. 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 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.

Você pode reduzir inicializações a frio especificando o número de instâncias pré-provisionadas (sempre prontas). Escala automaticamente com base na demanda.

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 de suas instâncias e implantar vários aplicativos de funções no mesmo plano com escalabilidade orientada a eventos.
  • Você tem um grande número de pequenas execuções e uma conta de execução alta, mas poucos GB por segundo no plano de Consumo.
  • Você precisa de mais opções de CPU ou memória do que as fornecidas pelos planos 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 conectividade de rede virtual.
  • Você deseja fornecer uma imagem personalizada do Linux para 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ê deve ter um faturamento totalmente previsível ou precisará dimensionar as instâncias manualmente.
  • Você deseja executar vários aplicativos da web e aplicativos de funções no mesmo plano
  • Você precisa de acesso a opções maiores de tamanho de computação.
  • Isolamento total de computação e acesso seguro à rede fornecidos por um Serviço de Aplicativo do Azure Environment (ASE).
  • Alto 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ê deseja 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 do código de aplicativos locais ou herdados para os microsserviços nativos de nuvem sendo executados nos contêineres.
  • Você deseja evitar a sobrecarga e a complexidade do gerenciamento de clusters Kubernetes e da computação dedicada.
  • Você precisa do poder de processamento de ponta fornecido por recursos de computação de CPU dedicados para suas funções.

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

A functionTimeout propriedade no arquivo de projeto host.json especifica a duração do tempo de espera para funções em um aplicativo de funções. 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 durante a duração do tempo limite.

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 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 associado5
Plano de Consumo 5 10
  1. Independentemente da configuração do tempo limite do aplicativo de funções, 230 segundos é a quantidade máxima de tempo que uma função disparada por HTTP pode levar para responder a uma solicitação. Isso ocorre devido ao tempo limite ocioso padrão do Azure Load Balancer. Para tempos de processamento mais longos, considere usar o padrão assíncrono de Durable Functions ou adie o trabalho real e retorne uma resposta imediata.
  2. Não há duração máxima de tempo limite de execução imposta. No entanto, o período de carência dado a uma execução de função é de 60 minutos durante a escala para os planos Flex Consumption e Premium, e um período de carência de 10 minutos é dado durante as atualizações da 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 da versão 1.x do runtime do host do Functions é não associado.
  5. Quando o número mínimo de réplicas é definido como zero, o tempo limite padrão depende dos gatilhos específicos usados no aplicativo.