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:
- Evite inicializações a frio com instâncias quentes.
- Conectividade da rede virtual.
- Dá suporte a durações de runtime mais longas.
- Escolha de tamanhos de instância Premium.
- Preços mais previsíveis, em comparação com o plano de Consumo.
- Alocação de aplicativo de alta densidade para planos com vários aplicativos de funções.
- Dá suporte a implantações de contêiner do Linux.
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.
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.
- 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.
- À 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.
- À 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.
- 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 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 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 de plataforma podem disparar um desligamento gerenciado e interromper a execução da função com um período de carência de 10 minutos.
- 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 expandir 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.
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.
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 | 20 | 20 |
Norte da China 2 | 20 | 20 |
Norte da China 3 | 20 | 20 |
Leste da Ásia | 100 | 20 |
Leste dos EUA | 100 | 100 |
Leste dos EUA 2 | 80 | 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 |
México Central | 20 | 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 |
Espanha Central | 20 | 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 | 20 | 20 |
Gov. EUA – Texas | 20 | Não disponível |
Gov. EUA – Virgínia | 80 | 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.