Plano Premium das Funções do Azure

O plano Azure Functions Elastic Premium é uma opção de hospedagem em escala dinâmica para aplicativos funcionais. Para outras opções de plano de hospedagem, consulte o artigo do plano de hospedagem.

Importante

O Azure Functions pode ser executado na plataforma do Serviço de Aplicativo do Azure. Na plataforma do Serviço de Aplicativo, os planos que hospedam aplicativos de função de plano Premium são chamados de planos Elastic Premium, com nomes de SKU como EP1. Se você optar por executar seu aplicativo de função em um plano Premium, certifique-se de criar um plano com um nome de SKU que comece com "E", como EP1. Os nomes de SKU do plano do Serviço de Aplicativo que começam com "P", como P1V2 (plano Premium V2 Pequeno), são, na verdade , planos de hospedagem dedicados. Por serem Dedicados e não Elastic Premium, os planos com nomes de SKU começando com "P" não serão dimensionados dinamicamente e poderão aumentar seus custos.

A hospedagem de planos Premium oferece os seguintes benefícios para suas funções:

Quando você está usando o plano Premium, instâncias do host do Azure Functions são adicionadas e removidas com base no número de eventos de entrada, assim como o plano de consumo. Vários aplicativos funcionais podem ser implantados no mesmo plano Premium, e o plano permite configurar o tamanho da instância de computação, o tamanho do plano base e o tamanho máximo do plano.

Faturação

A faturação do plano Premium baseia-se no número de núcleos por segundo e na memória alocada entre instâncias. Essa cobrança difere do plano de Consumo, que é cobrado com base no consumo de recursos por segundo e nas execuções. Não há cobrança de execução com o plano Premium. Esse faturamento resulta em um custo mensal mínimo por plano ativo, independentemente se a função está ativa ou ociosa. Lembre-se de que todos os aplicativos funcionais em um plano Premium compartilham instâncias alocadas. Para saber mais, consulte a página de preços do Azure Functions.

Nota

Cada plano premium tem pelo menos uma instância ativa (faturada) em todos os momentos.

Criar um plano Premium

Quando você cria um aplicativo de função no portal do Azure, o plano de Consumo é o padrão. Para criar um aplicativo funcional executado em um plano Premium, você deve criar ou escolher explicitamente um plano de hospedagem do Azure Functions Premium usando uma das SKUs do Elastic Premium . O aplicativo de função que você cria é hospedado neste plano. O portal do Azure facilita a criação do plano Premium e do aplicativo de função ao mesmo tempo. Você pode executar mais de um aplicativo de função no mesmo plano Premium, mas ambos devem ser executados no mesmo sistema operacional (Windows ou Linux).

Os artigos a seguir mostram como criar programaticamente um aplicativo de função com um plano Premium:

Elimine arranques a frio

Quando eventos ou execuções não ocorrem no plano de consumo, seu aplicativo pode ser dimensionado para zero instâncias. Quando novos eventos chegam, uma nova instância com seu aplicativo em execução deve ser especializada. Especializar novas instâncias leva tempo, dependendo do aplicativo. Essa latência extra na primeira chamada é frequentemente chamada de inicialização fria do aplicativo.

O plano Premium fornece dois recursos que trabalham juntos para eliminar efetivamente partidas a frio em suas funções: instâncias sempre prontas e instâncias pré-aquecidas. As instâncias sempre prontas são uma categoria de instâncias pré-alocadas não afetadas pelo dimensionamento, e as pré-aquecidas são um buffer à medida que você dimensiona devido a eventos HTTP.

Quando os eventos começam a acionar o aplicativo, eles são primeiro roteados para as instâncias sempre prontas. À medida que a função se torna ativa devido a eventos HTTP, outras instâncias são aquecidas como um buffer. Essas instâncias em buffer são chamadas de instâncias pré-aquecidas. Esse buffer reduz o arranque a frio para novas instâncias necessárias durante a escala.

Instâncias sempre prontas

No plano Premium, você pode ter seu aplicativo sempre pronto em um número especificado de instâncias. Seu aplicativo é executado continuamente nessas instâncias, independentemente da carga. Se a carga exceder o que suas instâncias sempre prontas podem lidar, mais instâncias serão adicionadas conforme necessário, até o máximo especificado.

Essa configuração no nível do aplicativo também controla as instâncias mínimas do seu plano. Por exemplo, considere ter três aplicativos funcionais no mesmo plano Premium. Quando dois dos seus aplicativos têm contagem de instâncias sempre pronta definida como uma e, em uma terceira instância, ela é definida como cinco, o número mínimo para todo o seu plano é cinco. Isso também reflete o número mínimo de instâncias pelas quais seu plano é cobrado. O número máximo de instâncias sempre prontas que suportamos por aplicativo é 20.

Você pode configurar o número de instâncias sempre prontas no portal do Azure selecionando seu Aplicativo de Função, indo para a guia Recursos da Plataforma e selecionando as opções de Expansão. Na janela de edição do aplicativo de função, as instâncias sempre prontas são específicas para esse aplicativo.

Configurações de escala elástica no portal

Instâncias pré-aquecidas

A configuração de contagem de instâncias pré-aquecidas fornece instâncias aquecidas como um buffer durante eventos de ativação e dimensionamento HTTP. As instâncias pré-aquecidas continuam a armazenar em buffer até que o limite máximo de expansão seja atingido. A contagem de instâncias pré-aquecidas padrão é 1 e, para a maioria dos cenários, esse valor deve permanecer como 1.

Considere um cenário menos comum, como um aplicativo em execução em um contêiner personalizado. Como os contêineres personalizados têm um aquecimento longo, você pode considerar aumentar esse buffer de instâncias pré-aquecidas. Uma instância pré-aquecida torna-se ativa somente depois que todas as instâncias ativas estiverem em uso.

Você também pode definir um gatilho de aquecimento que é executado durante o processo de pré-aquecimento. Você pode usar um gatilho de aquecimento para pré-carregar dependências personalizadas durante o processo de pré-aquecimento para que suas funções estejam prontas para começar a processar solicitações imediatamente. Para saber mais, consulte Gatilho de aquecimento do Azure Functions.

Considere este exemplo de como as instâncias sempre prontas e as instâncias pré-aquecidas funcionam juntas. Um aplicativo de função premium tem duas instâncias sempre prontas configuradas e o padrão de uma instância pré-aquecida.

Gráfico de expansão

  1. Quando o aplicativo está ocioso e nenhum evento é acionado, o aplicativo é provisionado e executado com duas instâncias. No momento, você é cobrado pelas duas instâncias sempre prontas, mas não é cobrado por uma instância pré-aquecida, pois nenhuma instância pré-aquecida é alocada.
  2. À medida que seu aplicativo começa a receber tráfego HTTP, as solicitações são balanceadas entre as duas instâncias sempre prontas. Assim que essas duas instâncias começam a processar eventos, uma instância é adicionada para preencher o buffer pré-aquecido. O aplicativo agora está sendo executado com três instâncias provisionadas: as duas instâncias sempre prontas e o terceiro buffer pré-aquecido e inativo. Você é cobrado pelas três instâncias.
  3. À medida que a carga aumenta e seu aplicativo precisa de mais instâncias para lidar com o tráfego HTTP, essa instância pré-aquecida é trocada para uma instância ativa. A carga HTTP agora é roteada para todas as três instâncias, e uma quarta instância é provisionada instantaneamente para preencher o buffer pré-aquecido.
  4. Essa sequência de dimensionamento e pré-aquecimento continua até que a contagem máxima de instâncias do aplicativo seja atingida ou a carga diminua, fazendo com que a plataforma volte a ser dimensionada após um período. Nenhuma instância é pré-aquecida ou ativada além do máximo.

Não é possível alterar a configuração de contagem de instâncias pré-aquecidas no portal, mas sim usar a CLI do Azure ou o Azure PowerShell.

Máximo de instâncias de aplicativo de função

Além da contagem máxima de intermitências do plano, você pode configurar um máximo por aplicativo. O máximo do aplicativo pode ser configurado usando o limite de escala do aplicativo. O limite máximo de expansão do aplicativo não pode exceder o máximo de instâncias de intermitência do plano.

Conectividade de rede privada

Os aplicativos funcionais implantados em um plano Premium podem aproveitar a integração de rede virtual para aplicativos Web. Quando configurado, seu aplicativo pode se comunicar com recursos em sua rede virtual ou protegido por meio de pontos de extremidade de serviço. Restrições de IP também estão disponíveis no aplicativo para restringir o tráfego de entrada.

Ao atribuir uma sub-rede ao seu aplicativo de função em um plano Premium, você precisa de uma sub-rede com endereços IP suficientes para cada instância potencial. Exigimos um bloco IP com pelo menos 100 endereços disponíveis.

Para obter mais informações, consulte integrar seu aplicativo de função a uma rede virtual.

Escala elástica rápida

Mais instâncias de computação são adicionadas automaticamente para seu aplicativo usando a mesma lógica de dimensionamento rápido do plano de consumo. Os aplicativos no mesmo Plano do Serviço de Aplicativo são dimensionados independentemente uns dos outros com base nas necessidades de um aplicativo individual. No entanto, os aplicativos do Functions no mesmo Plano do Serviço de Aplicativo compartilham recursos de VM para ajudar a reduzir custos, quando possível. O número de aplicativos associados a uma VM depende da pegada de cada aplicativo e do tamanho da VM.

Para saber mais sobre como funciona o dimensionamento, consulte Dimensionamento controlado por eventos no Azure Functions.

Maior duração de execução

As funções em um plano de consumo são limitadas a 10 minutos para uma única execução. No plano Premium, a duração da execução é de 30 minutos por padrão para evitar execuções descontroladas. No entanto, você pode modificar a configuração host.json para tornar a duração ilimitada para aplicativos do plano Premium, com as seguintes limitações:

  • As atualizações da plataforma podem desencadear um desligamento gerenciado e interromper a execução da função com um período de carência de 10 minutos.
  • Há um temporizador ocioso que para o trabalhador após 60 minutos sem novas execuções.
  • O comportamento de expansão pode causar o desligamento do trabalhador após 60 minutos.
  • As trocas de slots podem encerrar execuções nos slots de origem e de destino durante a troca.

Migração

Se você tiver um aplicativo de função existente, poderá usar os comandos da CLI do Azure para migrar seu aplicativo entre um plano de Consumo e um plano Premium no Windows. Os comandos específicos dependem da direção da migração. Para saber mais, consulte Planejar a migração.

Esta migração não é suportada no Linux.

Configurações do plano Premium

Quando você cria o plano, há duas configurações de tamanho de plano: o número mínimo de instâncias (ou tamanho do plano) e o limite máximo de intermitência.

Se seu aplicativo exigir instâncias além das instâncias sempre prontas, ele poderá continuar a ser dimensionado até que o número de instâncias atinja o limite máximo de intermitência do plano ou o limite máximo de expansão do aplicativo, se configurado. Você é cobrado pelas instâncias apenas enquanto elas estão em execução e alocadas a você, por segundo. A plataforma faz o seu melhor esforço para dimensionar seu aplicativo para os limites máximos definidos.

Você pode configurar o tamanho e os máximos do plano no portal do Azure selecionando as opções de Expansão em Configurações de um aplicativo de função implantado nesse plano.

Configurações de tamanho do plano elástico no portal

O mínimo para cada plano Premium é de pelo menos uma instância. O número mínimo real de instâncias é determinado para você com base nas instâncias sempre prontas solicitadas pelos aplicativos no plano. Por exemplo, se o aplicativo A solicitar cinco instâncias sempre prontas e o aplicativo B solicitar duas instâncias sempre prontas no mesmo plano, o tamanho mínimo do plano será determinado como cinco. O aplicativo A está sendo executado em todos os cinco e o aplicativo B está sendo executado apenas no 2.

Importante

Você é cobrado por cada instância alocada na contagem mínima de instâncias, independentemente de as funções estarem em execução ou não.

Na maioria das circunstâncias, esse mínimo calculado automaticamente é suficiente. No entanto, o dimensionamento além do mínimo ocorre com o melhor esforço. É possível, embora improvável, que em um horário específico a expansão possa ser atrasada se outras instâncias não estiverem disponíveis. Ao definir um mínimo maior do que o mínimo calculado automaticamente, você reserva instâncias antes da expansão.

Você pode configurar as instâncias mínimas no portal do Azure selecionando as opções de Expansão em Configurações de um aplicativo de função implantado nesse plano.

Configurações mínimas de instância no portal

SKUs de instância disponíveis

Quando criar ou dimensionar o seu plano, poderá escolher de entre três tamanhos de instância. Você é cobrado pelo número total de núcleos e memória provisionada, por segundo, que cada instância é alocada para você. A sua aplicação pode ser dimensionada automaticamente para várias instâncias, conforme necessário.

SKU Núcleos Memória Armazenamento
PE1 1 3,5 GB 250 GB
PE2 2 7 GB 250 GB
EP3 4 14 GB 250 GB

Considerações sobre o uso de memória

A execução em uma máquina com mais memória nem sempre significa que seu aplicativo de função usa toda a memória disponível.

Por exemplo, um aplicativo de função JavaScript é limitado pelo limite de memória padrão no Node.js. Para aumentar esse limite de memória fixa, adicione a configuração languageWorkers:node:arguments do aplicativo com o valor de --max-old-space-size=<max memory in MB>.

E para planos com mais de 4 GB de memória, verifique se a Configuração da plataforma Bitness está definida em 64 Bit Configurações gerais.

Expansão máxima da região

Estes são os valores de expansão máxima atualmente suportados para um único plano em cada região e configuração de SO:

País/Região Windows Linux
Austrália Central 100 20
Austrália Central 2 100 Não Disponível
Leste da Austrália 100 40
Austrália Sudeste 100 20
Sul do Brasil 100 20
Canadá Central 100 100
Índia Central 100 20
E.U.A. Central 100 100
China Leste 2 20 20
Norte da China 2 20 20
Norte da China 3 20 20
Ásia Leste 100 20
E.U.A. Leste 100 100
E.U.A. Leste 2 80 100
França Central 100 60
Alemanha Centro-Oeste 100 20
Israel Central 100 20
Norte da Itália 100 20
Leste do Japão 100 20
Oeste do Japão 100 20
Jio, Oeste da Índia 100 20
Coreia do Sul Central 100 20
Sul da Coreia do Sul 40 20
México Central 20 20
E.U.A. Centro-Norte 100 20
Europa do Norte 100 100
Leste da Noruega 100 20
Norte da África do Sul 100 20
Oeste da África do Sul 20 20
E.U.A. Centro-Sul 100 100
Sul da Índia 100 Não Disponível
Sudeste Asiático 100 20
Espanha Central 20 20
Norte da Suíça 100 20
Oeste da Suíça 100 20
Norte dos E.A.U. 100 20
Sul do Reino Unido 100 100
Oeste do Reino Unido 100 20
US Gov - Arizona 20 20
USGov Texas 20 Não Disponível
USGov Virginia 80 20
E.U.A. Centro-Oeste 100 20
Europa Ocidental 100 100
Oeste da Índia 100 20
E.U.A. Oeste 100 100
E.U.A. Oeste 2 100 20
EUA Oeste 3 100 20

Para obter mais informações, consulte a disponibilidade regional completa do Azure Functions.

Próximos passos