Plano Premium do Azure Functions

O plano Premium Elástico do Azure Functions é uma opção de hospedagem de escala dinâmica para aplicativos de funções. Para outras opções do plano de hospedagem, consulte o artigo sobre plano de hospedagem.

Importante

O Azure Functions pode ser executado na plataforma de Serviço de Aplicativo do Azure. Na plataforma do Serviço de Aplicativo, os planos que hospedam Premium aplicativos de função de plano são chamados de planos Premium Elásticos, com nomes de SKU como EP1. Se optar por executar seu aplicativo de funções em um plano Premium, crie 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 o P1V2 (Plano pequeno Premium V2), são, na verdade, P1V2. Como eles são Dedicados e não Elásticos Premium, os planos com nomes de SKU começando com "P" não serão dimensionados dinamicamente e poderão aumentar os custos.

A hospedagem do plano Premium fornece os seguintes benefícios para suas funções:

Ao usar um plano Premium, as instâncias do host do Azure Functions são adicionadas e removidas com base no número de eventos de entrada, como ocorre no plano de Consumo. Vários aplicativos de funções podem ser implantados no mesmo plano Premium, e o plano permite que você configure o tamanho da instância de computação, o tamanho do plano base e o tamanho máximo do plano.

Cobrança

A cobrança do plano Premium é baseada 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. Essa cobrança resulta em um custo mensal mínimo por plano ativo, independentemente da função estar ativa ou ociosa. Tenha em mente que todos os aplicativos de funções em um plano Premium compartilham instâncias alocadas. Para saber mais, consulte a página de preços do Azure Functions.

Observação

Todo plano premium tem, pelo menos, uma instância ativa (cobrada) o tempo todo.

Criar um plano Premium

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

Os seguintes artigos mostram como criar de forma programática um aplicativo de funções com um plano Premium:

Eliminar inicializações a frio

Quando os eventos ou execuções não ocorrem no plano Consumo, seu aplicativo poderá ser dimensionado para zero instâncias. Quando novos eventos chegam, uma nova instância com seu aplicativo em execução deve ser especializada. A especialização de novas instâncias leva tempo, dependendo do aplicativo. Essa latência extra na primeira chamada geralmente é chamada de inicialização a frio do aplicativo.

O plano Premium fornece dois recursos que funcionam juntos para eliminar com eficácia a inicialização a frio nas suas funções: instâncias sempre prontas e instâncias pré-aquecidas. As instâncias sempre prontas constituem uma categoria de instâncias pré-alocadas não afetadas pelo dimensionamento, e as pré-aquecidas funcionam como um buffer à medida que você as dimensiona devido a eventos de HTTP.

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

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 limite que suas instâncias sempre prontas são capazes de manusear, instâncias adicionais serão adicionadas conforme o necessário, até o máximo que você especificar.

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 de funções no mesmo plano Premium. Quando dois de seus aplicativos tiverem o número de instâncias sempre prontas definido como um e em uma terceira instância estiver definido como cinco, o número mínimo para o seu plano inteiro será 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ções, acessando a guia Recursos da Plataforma e selecionando as opções Scale Out. Na janela editar do aplicativo de funções, 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 do número de instâncias pré-aquecidas fornece instâncias aquecidas que atuam como um buffer durante os eventos de ativação e o dimensionamento de HTTP. As instâncias pré-aquecidas continuam no buffer até que o limite máximo de expansão seja atingido. O número 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 executado em um contêiner personalizado. Como os contêineres personalizados têm um aquecimento bastante longo, você pode pensar em aumentar esse buffer de instâncias pré-aquecidas. Uma instância pré-aquecida se torna 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 de forma que suas funções fiquem prontas para começar a processar solicitações imediatamente. Para saber mais, consulte Gatilhos de aquecimento do Azure Functions.

Veja esse exemplo de como as instâncias sempre prontas e as instâncias pré-aquecidas funcionam juntas. Um aplicativo de funções premium tem duas instâncias sempre prontas configuradas e o número padrão de uma instância pré-aquecida.

Escalar gráfico horizontalmente

  1. Quando o aplicativo está ocioso e nenhum evento está sendo 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, já que nenhuma instância pré-aquecida é alocada.
  2. À medida que seu aplicativo começa a receber tráfego HTTP, as solicitações fazem um balanceamento de carga nas 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 a terceira que é um 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 por 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 ampliação e pré-aquecimento continua até que o número máximo de instâncias do aplicativo seja atingido ou a carga diminua, fazendo com que a plataforma seja reduzida após um determinado período. Nenhuma instância é pré-aquecida ou ativada além do número máximo.

Você não pode alterar a configuração de número de instâncias pré-aquecidas no portal; em vez disso, precisa usar a CLI do Azure ou o Azure PowerShell.

Máximo de instâncias do aplicativo de funções

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 escala horizontal do aplicativo não pode exceder o máximo de instâncias de intermitência do plano.

Conectividade de rede privada

Os aplicativos de funções implantados em um plano Premium podem tirar proveito da integração de rede virtual para aplicativos web. Quando configurado, seu aplicativo pode se comunicar com recursos dentro da sua rede virtual ou protegidos por meio de pontos de extremidade de serviço. As 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ções em um plano Premium, você precisa de uma sub-rede com endereços IP suficientes para cada instância em potencial. Exigimos um bloco de IP com pelo menos 100 endereços disponíveis.

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

Dimensionamento elástico rápido

Mais instâncias de computação adicionais são adicionadas automaticamente para o seu aplicativo usando a mesma lógica de ampliação rápida do plano Consumo. Os aplicativos no mesmo Plano do Serviço de Aplicativo escalam de forma independente, com base nas necessidades de um aplicativo individual. No entanto, os aplicativos de Funções no mesmo Plano do Serviço de Aplicativo compartilham recursos da VM para ajudar a reduzir os custos, quando possível. O número de aplicativos associados a uma VM depende do volume de memória de cada aplicativo e do tamanho da VM.

Para saber mais sobre como a colocação em escala funciona, consulte Colocação em escala controlada por eventos no Azure Functions.

Duração da execução mais longa

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

  • As atualizações da plataforma podem acionar um desligamento gerenciado e interromper a execução da função.
  • As interrupções da plataforma podem causar um desligamento não tratado e interromper a execução da função.
  • Há um cronômetro ocioso que interrompe o trabalho após 60 minutos sem novas execuções.
  • O comportamento de escala pode causar o desligamento do trabalhado após 60 minutos.
  • As trocas de slot podem encerrar execuções nos slots de origem e destino durante a troca.

Migração

Se você possuir um aplicativo de funções existente, use 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, confira Planejar a migração.

Não há suporte para essa migração no Linux.

Configurações do plano Premium

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

Se o aplicativo exigir instâncias além das instâncias sempre prontas, ele poderá continuar a escalar horizontalmente 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 por instâncias apenas enquanto elas estão em execução e alocadas a você, por segundo. A plataforma se esforça ao máximo para escala de seu aplicativo até os limites máximos definidos.

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

Configurações de tamanho de 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 será determinado para você com base nas instâncias sempre prontas solicitadas por 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 sendo cinco. O aplicativo A está sendo executado em todas as cinco, e o aplicativo B só está sendo executado em duas.

Importante

Você será cobrado por cada instância alocada na contagem mínima de instâncias, independentemente das funções serem executadas ou não.

Na maioria das circunstâncias, esse mínimo calculado automaticamente é suficiente. No entanto, a colocação em escala além do mínimo é uma meta. É possível, embora seja improvável, que um escalonamento horizontal em um momento específico possa ser adiado se as instâncias adicionais estiverem indisponíveis. Ao definir um mínimo maior que o mínimo calculado automaticamente, você reserva instâncias da expansão com antecedência.

Você pode configurar o número mínimo de instâncias no portal do Azure selecionando as opções de Scale Out em Configurações de um aplicativo de funções implantado nesse plano.

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

SKUs da instância disponível

Ao criar ou colocar seu plano em escala, você pode escolher entre três tamanhos de instância. Você será cobrado pelo número total de núcleos e memória provisionados, por cada segundo que cada instância for alocada a você. Seu aplicativo pode escalar horizontalmente de forma automática para várias instâncias, conforme necessário.

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

Considerações sobre o uso de memória

A execução em um computador com mais memória nem sempre significa que seu aplicativo de funções usa toda a memória disponível.

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

Para planos com mais de 4 GB de memória, certifique-se de que a configuração do Número de Bits da Plataforma esteja definida como 64 Bit em Configurações Gerais.

Expansão máxima de região

Esses são os valores máximos de escalonamento horizontal com suporte no momento para um único plano em cada região e configuração de sistema operacional:

Region Windows Linux
Austrália Central 100 20
Austrália Central 2 100 Não disponível
Leste da Austrália 100 40
Australia Southeast 100 20
Brazil South 100 20
Canadá Central 100 100
Índia Central 100 20
Centro dos EUA 100 100
Leste da China 2 100 20
Norte da China 2 100 20
Leste da Ásia 100 20
Leste dos EUA 100 100
Leste dos EUA 2 100 100
França Central 100 60
Centro-Oeste da Alemanha 100 20
Israel Central 100 20
Norte da Itália 100 20
Japan East 100 20
Oeste do Japão 100 20
Jio Oeste da Índia 100 20
Coreia Central 100 20
Sul da Coreia 40 20
Centro-Norte dos EUA 100 20
Norte da Europa 100 100
Leste da Noruega 100 20
Norte da África do Sul 100 20
Oeste da África do Sul 20 20
Centro-Sul dos Estados Unidos 100 100
Sul da Índia 100 Não disponível
Sudeste Asiático 100 20
Norte da Suíça 100 20
Oeste da Suíça 100 20
Norte dos EAU 100 20
Sul do Reino Unido 100 100
Oeste do Reino Unido 100 20
Gov. EUA – Arizona 100 20
Gov. EUA – Texas 100 Não disponível
Gov. EUA – Virgínia 100 20
Centro-Oeste dos EUA 100 20
Europa Ocidental 100 100
Oeste da Índia 100 20
Oeste dos EUA 100 100
Oeste dos EUA 2 100 20
Oeste dos EUA 3 100 20

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

Próximas etapas