Compartilhar via


Plano de hospedagem do Consumo Flex do Azure Functions

O Consumo Flex é um plano de hospedagem do Azure Functions baseado em Linux que usa o modelo de cobrança sem servidor, onde você paga apenas pelo que usar. O plano oferece mais flexibilidade e personalização ao introduzir rede privada, seleção do tamanho de memória da instância e recursos de expansão rápida e ampla, tudo isso com base em um modelo sem servidor.

Você pode analisar exemplos de ponta a ponta que apresentam o plano de Consumo Flex no Repositório de exemplos do plano de Consumo Flex.

Benefícios

O plano de Consumo Flex se baseia nas vantagens do plano de Consumo, que incluem escala dinâmica e cobrança baseada em execução. Com o Consumo Flex, você também ganha estes recursos extras:

Esta tabela ajuda você a comparar diretamente os recursos do Consumo Flex com o plano de hospedagem de Consumo:

Recurso Consumo Consumo Flex
Escalar para zero ✅ Sim ✅ Sim
Comportamento da escala Orientado por eventos Orientado por eventos (rápido)
Redes virtuais ❌ Sem suporte ✅ Com suporte
Computação dedicada (atenuar inicializações a frio) ❌ Nenhum ✅ Instâncias sempre prontas (opcional)
Cobrança Apenas tempo de execução Tempo de execução + instâncias sempre prontas
Instâncias de expansão (máx.) 200 1000

Para obter uma comparação completa do plano de Consumo Flex com relação ao plano de Consumo e todos os outros tipos de plano e hospedagem, confira Opções de escala e hospedagem de funções.

Integração de rede virtual

O Consumo Flex amplia os benefícios tradicionais do plano de Consumo ao oferecer suporte para integração com rede virtual. Quando seus aplicativos são executados em um plano de Consumo Flex, eles podem se conectar de forma segura a outros serviços do Azure dentro de uma rede virtual. Isso tudo enquanto você ainda aproveita a cobrança e a escalabilidade sem servidor, juntamente com os benefícios de escala e taxa de transferência do plano de Consumo Flex. Para saber mais, veja Habilitar a integração com a rede virtual.

Memória da instância

Quando você cria seu aplicativo de funções em um plano de Consumo Flex, é possível selecionar o tamanho da memória das instâncias nas quais seu aplicativo é executado. Confira Cobrança para saber como os tamanhos da memória de instâncias afetam os custos do aplicativo de funções.

Atualmente, o Consumo Flex oferece opções de tamanho de memória de instância de 2.048 MB e 4.096 MB.

Ao decidir qual tamanho de memória de instância usar com seus aplicativos, aqui estão algumas coisas a considerar:

  • O tamanho de memória de instância de 2.048 MB é o padrão e deve ser usado na maioria dos cenários. Use o tamanho de memória de instância de 4.096 MB para cenários em que seu aplicativo requer mais simultaneidade ou maior poder de processamento. Para mais informações, confira Configurar a memória da instância.
  • Você pode alterar o tamanho da memória de uma instância a qualquer momento. Para mais informações, confira Configurar a memória da instância.
  • Os recursos de instância são compartilhados entre o código da função e o host do Azure Functions.
  • Quanto maior o tamanho da memória das instâncias, mais cada instância pode lidar com execuções simultâneas ou cargas de trabalho de CPU ou memória mais intensivas. As decisões de escala específicas são específicas da carga de trabalho.
  • A simultaneidade padrão dos gatilhos HTTP depende do tamanho da memória da instância. Para obter mais informações, consulte Simultaneidade do gatilho HTTP.
  • As CPUs disponíveis e a largura de banda de rede são fornecidas proporcionalmente a um tamanho de instância específico.

Escalabilidade por função

A simultaneidade é um fator-chave que determina como os aplicativos de funções de Consumo Flex escalam. Para melhorar o desempenho de escala de aplicativos com vários tipos de gatilho, o plano de Consumo Flex fornece uma maneira mais determinística de escalar seu aplicativo com base em funções.

Este comportamento de escalabilidade por função faz parte da plataforma de hospedagem, então você não precisa configurar seu aplicativo ou mudar o código. Para mais informações, confira Escalabilidade por função no artigo chamado Escalabilidade orientada por eventos.

No dimensionamento por função, as decisões são tomadas para determinados gatilhos de função com base em agregações de grupo. Esta tabela mostra o conjunto definido de grupos de dimensionamento de funções:

Grupos de dimensionamento Gatilhos em grupo Valor das configurações
Gatilhos HTTP Gatilho HTTP
Gatilho do SignalR
http
Gatilhos de armazenamento de blobs
(Baseado em Grade de Eventos)
Gatilho de armazenamento de blobs blob
Funções duráveis Gatilho de orquestração
Gatilho de atividade
Gatilho de entidade
durable

Todas as outras funções no aplicativo são dimensionadas individualmente em seu próprio conjunto de instâncias, que são referenciadas usando a convenção function:<NAMED_FUNCTION>.

Instâncias sempre prontas

O Consumo Flex inclui um recurso sempre pronto que permite escolher instâncias que estão sempre em execução e atribuídas a cada um dos seus grupos ou funções de escala por função. Essa é uma ótima opção para cenários onde você precisa ter um número mínimo de instâncias sempre prontas para lidar com solicitações, como, por exemplo, para reduzir a latência de inicialização a frio do aplicativo. O padrão é 0 (zero).

Por exemplo, se você definir o recurso "sempre pronto" para 2 em seu grupo de funções HTTP, a plataforma manterá duas instâncias sempre em execução e atribuídas ao seu aplicativo para suas funções HTTP no aplicativo. Essas instâncias estão processando suas execuções de função, mas dependendo das configurações de simultaneidade, a plataforma expande além dessas duas instâncias com instâncias sob demanda.

Para aprender a configurar instâncias sempre prontas, confira Definir números de instâncias sempre prontas.

Simultaneidade

Simultaneidade refere-se ao número de execuções simultâneas de uma função em uma instância do seu aplicativo. Você pode definir um número máximo de execuções simultâneas que cada instância deve lidar a qualquer momento. Para obter mais informações, consulte Simultaneidade do gatilho HTTP.

A simultaneidade tem um efeito direto em como seu aplicativo escala, pois, em níveis de simultaneidade mais baixos, você precisa de mais instâncias para lidar com a demanda orientada por eventos de uma função. Embora seja possível controlar e ajustar a simultaneidade, fornecemos padrões que funcionam para a maioria dos casos. Para aprender a definir limites de simultaneidade para funções de gatilho HTTP, confira Definir limites de simultaneidade HTTP.

Implantação

As implantações no plano de Consumo Flex seguem um único caminho. Depois que o código do projeto é compilado e compactado em um pacote de aplicativos, ele é implantado em um contêiner de armazenamento de blobs. Na inicialização, seu aplicativo obtém o pacote e executa o código da função a partir desse pacote. Por padrão, a mesma conta de armazenamento usada para armazenar metadados internos do host (AzureWebJobsStorage) também é usada como contêiner de implantação. No entanto, você pode usar uma conta de armazenamento alternativa ou escolher seu método de autenticação preferencial definir as configurações de implantação do aplicativo. Ao simplificar o caminho da implantação, não há mais a necessidade de as configurações do aplicativo influenciarem o comportamento da implantação.

Cobrança

Existem dois modos pelos quais seus custos são determinados ao executar seus aplicativos no plano de Consumo Flexível. Cada modo é determinado por instância.

Modo de cobrança Descrição
Sob demanda Quando executado no modo sob demanda, você é cobrado apenas pelo tempo que o código da sua função está executando nas suas instâncias disponíveis. No modo sob demanda, não é necessário um número mínimo de instâncias. Você é cobrado por:

• A quantidade total de memória provisionada enquanto cada instância sob demanda está ativamente executando funções (em GB-segundos), menos uma concessão gratuita de GB-s por mês.
• O número total de execuções, menos uma concessão gratuita (número) de execuções por mês.
Sempre pronto Você pode configurar uma ou mais instâncias, atribuídas a tipos de gatilho específicos (HTTP/Durable/Blob) e funções individuais, que estão sempre disponíveis para lidar com solicitações. Quando você tem qualquer instância sempre pronta habilitada, você é cobrado por:

• A quantidade total de memória provisionada em todas as suas instâncias sempre prontas, conhecida como base (em GB-segundos).
• A quantidade total de memória provisionada durante o tempo que cada instância sempre pronta está ativamente executando funções (em GB-segundos).
• O número total de execuções.

Na cobrança sempre pronta, não há concessões gratuitas.

Para conferir as informações mais atualizadas sobre preços de execução, custos de referência para o recurso "sempre pronto" e concessões gratuitas para execuções sob demanda, acesse a Página de preços do Azure Functions.

O período mínimo faturável de execução para ambos os modos de execução é de 1.000 ms. Após isso, o período de atividade faturável é arredondado para os 100 ms mais próximos. Você pode encontrar detalhes sobre os medidores de cobrança do plano de Consumo Flex na Referência monitoramento.

Para detalhes sobre como os custos são calculados quando você usa um plano de Consumo Flex, incluindo exemplos, confira Custos baseados no consumo.

Versões de pilha de linguagem com suporte

Esta tabela mostra as versões de pilha de linguagem que têm suporte para aplicativos de Consumo Flex neste momento:

Pilha de linguagem Versão necessária
C# (modelo de processo isolado)1 .NET 82
Java Java 11, Java 17
Node.js Node 20
PowerShell PowerShell 7.4
Python Python 3.10, Python 3.11

1Modo de processo em C# não tem suporte. Em vez disso, você precisa migrar seu projeto de código .NET para executar no modelo de trabalho isolado.
2Requer a versão 1.20.0 ou posterior do Microsoft.Azure.Functions.Worker e versão 1.16.2 ou posterior do Microsoft.Azure.Functions.Worker.Sdk.

Cotas de memória de assinatura regional

Atualmente, cada região em uma determinada assinatura tem um limite de memória de 512,000 MB para todas as instâncias de aplicativos em execução em planos de Consumo Flex. Isso significa que, em uma determinada assinatura e região, você pode ter qualquer combinação de tamanhos e contagens de memória de instância, desde que permaneçam abaixo do limite da cota. Por exemplo, cada um dos seguintes exemplos significaria que a cota foi atingida e os aplicativos parariam de escalar:

  • Você tem um aplicativo de 2.048 MB dimensionado para 100 e um segundo aplicativo de 2.048 MB dimensionado para 150 instâncias
  • Você tem um aplicativo de 2.048 MB que foi dimensionado para 250 instâncias
  • Você tem um aplicativo de 4.096 MB que foi dimensionado para 125 instâncias
  • Você tem um aplicativo de 4.096 MB dimensionado para 100 e um aplicativo de 2.048 MB dimensionado para 50 instâncias

Essa cota pode ser aumentada para permitir que os aplicativos do Consumo Flex sejam dimensionados ainda mais, dependendo dos seus requisitos. Se seus aplicativos exigirem uma cota maior, crie um tíquete de suporte.

Propriedades e configurações preteridas

No Consumo Flex, muitas das configurações de aplicativo padrão e as propriedades de configuração de site usadas no Bicep, nos modelos do ARM e no plano de controle geral foram preteridas ou movidas e não devem ser usadas ao automatizar a criação de recursos do aplicativo de funções. Para obter mais informações, confira Plano de Consumo Flex preteridos.

Considerações

Lembre-se das seguintes considerações ao usar o plano de Consumo Flex:

  • Host: há um tempo limite de 30 segundos para a inicialização do aplicativo. Quando o aplicativo de funções leva mais de 30 segundos para iniciar, você pode ver entradas System.TimeoutException relacionadas a gRPC registradas. Você não pode configurar esse tempo limite no momento. Para obter mais informações, consulte este item de trabalho do host.
  • Durable Functions: o Armazenamento do Microsoft Azure é atualmente o único provedor de armazenamento compatível com o Durable Functions quando hospedado no plano de Consumo Flex. Confira as recomendações ao hospedar o Durable Functions no plano de Consumo Flex.
  • Integração de rede virtual Verifique se o provedor de recursos do Azure Microsoft.App está habilitado para sua assinatura seguindo estas instruções. A delegação de sub-rede exigida por aplicativos de Consumo Flex é Microsoft.App/environments.
  • Gatilhos: Todos os acionadores são totalmente compatíveis, exceto os acionadores do Kafka e do SQL do Azure. O gatilho de armazenamento Blobs só oferece suporte ou Provedor de origem da Grade de Eventos. Os aplicativos de funções que são usam C# devem usar a versão [4.0.0, 5.0.0) do pacote de extensão ou uma versão posterior.
  • Regiões: nem todas as regiões têm suporte no momento. Para saber mais, confira Exibir regiões com suporte no momento.
  • Implantações: não há suporte para slots de implantação no momento.
  • Escala: A menor escala máxima é 40 atualmente. O valor mais alto com suporte no momento é 1000.
  • Dependências gerenciadas: Dependências gerenciadas no PowerShell não tem suporte no Consumo Flex. Em vez disso, você deve definir seus próprios módulos personalizados.
  • Configurações de diagnóstico: as configurações de diagnóstico não são suportadas atualmente.
  • Certificados: No momento, não há suporte para o carregamento de certificados com a configuração do aplicativo WebSITE_LOAD_CERTIFICATES.
  • Referências do Key Vault: as referências do Key Vault nas configurações do aplicativo não funcionam quando o este tem acesso restrito à rede, mesmo que o aplicativo de funções tenha integração com a Rede Virtual. A solução alternativa atual é referenciar diretamente o Key Vault no código e ler os segredos necessários.

Opções de hospedagem do Azure FunctionsCrie e gerencie aplicativos de funções no plano de Consumo Flex