Slots de implantação do Azure Functions

Os slots de implantação do Azure Functions permitem que seu aplicativo de funções execute diferentes instâncias chamadas slots. Os slots são ambientes diferentes expostos por meio de um ponto de extremidade publicamente disponível. Uma instância de aplicativo sempre é mapeada para o slot de produção e você pode trocar instâncias atribuídas a um slot sob demanda. Os aplicativos de funções em execução em um Plano de consumo de têm um único slot extra para preparo. Você pode obter mais slots de preparo executando seu aplicativo em um plano Premium ou plano Dedicado (Serviço de Aplicativo). Para saber mais, confira Limites do serviço.

O descrição a seguir mostra como as funções são afetadas pela troca de slots:

  • O redirecionamento de tráfego é contínuo. Nenhuma solicitação é removida devido à troca. Esse comportamento contínuo ocorre devido ao roteamento dos gatilhos de função seguintes para o slot trocado.
  • Atualmente, a função em execução é encerrada durante a troca. Para aprender a escrever funções sem estado e defensivas, consulte Melhorar o desempenho e a confiabilidade do Azure Functions.

Por que usar os slots?

Há várias vantagens em usar slots de implantação, incluindo:

  • Ambientes diferentes para finalidades diferentes: usar slots diferentes oferece a oportunidade de diferenciar instâncias de aplicativo antes de trocar para a produção ou para um slot de preparo.
  • Preparação: a implantação em um slot em vez de diretamente em produção permite que o aplicativo se prepare antes de ser lançado. Além disso, o uso de slots reduz a latência para cargas de trabalho disparadas por HTTP. As instâncias são preparadas antes da implantação, o que reduz a partida a frio (início) para funções implantadas recentemente.
  • Reversão fácil: após a troca, o slot com o aplicativo de preparo anterior terá o aplicativo de produção anterior. Se as alterações alternadas para o slot de produção não correspondem às suas expectativas, você pode realizar a mesma alternância imediatamente para ter o "último site válido conhecido" de volta.
  • Minimizar reinicializações: alterar as configurações do aplicativo em um slot de produção requer uma reinicialização do aplicativo em execução. Em vez disso, você pode alterar as configurações em um slot de preparo e trocar as configurações de alteração para produção por uma instância pré-inicializada. Os slots são a maneira recomendada de migrar entre as versões de runtime do Functions, mantendo a maior disponibilidade. Para saber mais, confira Atualização com o mínimo de tempo de inatividade.

Operações de troca

Durante a troca, um slot é considerado a origem e o outro o destino. O slot de origem tem a instância do aplicativo que é aplicada ao slot de destino. As etapas a seguir garantem que o slot de destino não fique inativo durante a troca:

  1. Aplicar configurações: as configurações do slot de destino são aplicadas a todas as instâncias do slot de origem. Por exemplo, as configurações de produção são aplicadas à instância de preparo. As configurações aplicadas incluem as seguintes categorias:

  2. Aguarde as reinicializações e a disponibilidade: a troca espera que cada instância no slot de origem conclua sua reinicialização e esteja disponível para solicitações. Se alguma instância não conseguir reiniciar, a operação de troca reverte todas as alterações no slot de origem e interrompe a operação.

  3. Roteamento de atualização: se todas as instâncias no slot de origem forem ativadas com êxito, os dois slots concluirão a troca alternando as regras de roteamento. Após esta etapa, o slot de destino (por exemplo, o slot de produção) tem o aplicativo que foi anteriormente ativado no slot de origem.

  4. Repita a operação: agora que o slot de origem tem o aplicativo da pré-troca que antes estava no slot de destino, execute a mesma operação, aplicando todas as configurações e reiniciando as instâncias no slot de origem.

Tenha em mente os seguintes pontos:

  • Em algum ponto da operação de troca, a inicialização dos aplicativos trocados acontece no slot de origem. O slot de destino permanece online enquanto o slot de origem é preparado, independentemente da troca ser bem-sucedida ou falhar.

  • Para trocar um slot de preparo pelo slot de produção, confira se o slot de produção é sempre o slot de destino. Dessa forma, a operação de troca não afeta seu aplicativo de produção.

  • As configurações relacionadas a origens e associações de eventos devem ser definidas como configurações de slot de implantaçãoantes de iniciar uma troca. Marcá-los como "fixos" antecipadamente garante que os eventos e as saídas sejam direcionados para a instância apropriada.

Gerenciar configurações

Algumas definições de configuração são específicas do slot. A lista a seguir detalha quais configurações são alteradas quando você troca os slots e quais permanecem inalteradas.

Configurações específicas do slot:

  • Pontos de extremidade de publicação
  • Nomes de domínio personalizados
  • Certificados não públicos e configurações de TLS/SSL
  • Configurações de dimensionamento
  • Restrições de IP
  • Always On
  • Configurações de Diagnóstico
  • CORS (Compartilhamento de Recursos entre Origens)
  • Pontos de extremidade privados

Configurações não específicas do slot:

  • Configurações gerais, como a versão do framework, 32/64 bits, Web sockets
  • Configurações do aplicativo (podem ser configuradas para fixarem-se a um slot)
  • Cadeias de conexão (podem ser configuradas para fixarem-se a um slot)
  • Mapeamentos de manipulador
  • Certificados públicos
  • Conexões híbridas *
  • Integração de rede virtual *
  • Pontos de extremidade de serviço *
  • Rede de Distribuição de Conteúdo do Azure *

Os recursos marcados com um asterisco (*) não são trocados por design.

Observação

Determinadas configurações de aplicativo que se aplicam a configurações não intercambiáveis também são trocadas. Por exemplo, como as configurações de diagnóstico não são trocadas, as configurações de aplicativo relacionadas, como WEBSITE_HTTPLOGGING_RETENTION_DAYS e DIAGNOSTICS_AZUREBLOBRETENTIONDAYS, também não são trocadas, mesmo que não apareçam como configurações de slot.

Criar um slot de implantação

Você pode marcar as configurações como uma configuração de implantação, o que o torna fixo. Uma configuração fixa não muda com a instância do aplicativo.

Se você criar uma configuração de implantação em um slot, confira se criou a mesma configuração com um valor exclusivo em qualquer outro slot que esteja envolvido na troca. Dessa forma, embora o valor de uma configuração não mude, os nomes de configuração permanecem consistentes entre os slots. Essa consistência de nome garante que seu código não tente acessar uma configuração definida em um slot, mas não em outra.

Use as seguintes etapas para criar uma configuração de implantação:

  1. Navegue até Slots de implantação no aplicativo de funções e selecione o nome do slot.

    Find slots in the Azure portal.

  2. Selecione Configuração e o nome da configuração que você deseja fixar no slot atual.

    Configure the application setting for a slot in the Azure portal.

  3. Selecione Configuração do slot de implantação e clique em OK.

    Configure the deployment slot setting.

  4. Quando a seção de configuração desaparecer, selecione Salvar para manter as alterações

    Save the deployment slot setting.

Implantação

Os slots ficam vazios quando você cria um slot. Use qualquer uma das tecnologias de implantação com suporte para implantar seu aplicativo em um slot.

Scaling

Todos os slots são dimensionados para o mesmo número de trabalhadores que o slot de produção.

  • Para planos de Consumo, o slot é dimensionado conforme o aplicativo de funções é dimensionado.
  • Para planos do Serviço de Aplicativo, o aplicativo é dimensionado para um número fixo de trabalhadores. Os slots são executados com o mesmo número de trabalhadores que o plano do aplicativo.

Exibir os slots

Você pode exibir informações sobre slots existentes usando a CLI do Azure ou por meio do portal do Azure.

Use estas etapas para criar um novo slot no portal:

  1. Navegue até o aplicativo de funções.

  2. Selecione Slots de implantação e os slots existentes são mostrados.

Adicionar um slot

Você pode adicionar um slot usando a CLI do Azure ou por meio do portal do Azure.

Use estas etapas para criar um slot no portal:

  1. Navegue até o aplicativo de funções.

  2. Selecione Slots de implantação e + Adicionar Slot.

    Add Azure Functions deployment slot.

  3. Digite o nome do slot e selecione Adicionar.

    Name the Azure Functions deployment slot.

Recursos de slot de acesso

Você acessa recursos (gatilhos HTTP e pontos de extremidade de administrador) em um slot de preparo da mesma forma que o slot de produção. No entanto, em vez do nome do host do aplicativo de funções, você usa o nome do host específico do slot na URL de solicitação, juntamente com quaisquer chaves específicas de slot. Como os slots de preparo são aplicativos dinâmicos, você deve proteger suas funções em um slot de preparo como faria no slot de produção.

Trocar slots

Você pode trocar slots em uma saída de produção usando a CLI do Azure ou por meio do portal do Azure.

Use estas etapas para trocar um slot de preparo para produção:

  1. Navegue até o aplicativo de função.

  2. Selecione Slots de implantação e Trocar.

    Screenshot that shows the 'Deployment slot' page with the 'Add Slot' action selected.

  3. Verifique as definições de configuração da troca e selecione Trocar

    Swap the deployment slot.

Essa operação de troca pode levar alguns segundos.

Reverter a troca

Se a troca resultar em erro ou se você simplesmente quiser "desfazer" a troca, reverta para o estado inicial. Para retornar ao estado de pré-troca, faça outra troca para reverter a troca.

Remover um slot

Você pode remover um slot usando a CLI do Azure ou por meio do portal do Azure.

Use estas etapas para remover um slot do seu aplicativo no portal:

  1. Navegue até Slots de implantação no aplicativo de funções e selecione o nome do slot.

    Find slots in the Azure portal.

  2. Selecione Excluir.

    Screenshot that shows the 'Overview' page with the 'Delete' action selected.

  3. Digite o nome do slot de implantação que você deseja excluir e selecione Excluir.

    Delete the deployment slot in the Azure portal.

  4. Feche o painel de confirmação.

    Deployment slot delete confirmation.

Alterar plano do Serviço de Aplicativo

Com um aplicativo de funções que está sendo executado em um plano do Serviço de Aplicativo, altere o plano do Serviço de Aplicativo subjacente para um slot.

Observação

Não é possível alterar o plano do Serviço de Aplicativo de um slot no plano de Consumo.

Use as etapas a seguir para alterar o plano do Serviço de Aplicativo de um slot:

  1. Navegue até Slots de implantação no aplicativo de funções e selecione o nome do slot.

    Find slots in the Azure portal.

  2. Em plano do Serviço de Aplicativo, selecione Alterar plano do Serviço de Aplicativo.

  3. Selecione o plano para o qual você deseja atualizar ou crie um novo plano.

    Change the App Service plan in the Azure portal.

  4. Selecione OK.

Considerações

Os slots de implantação do Azure Functions têm as seguintes considerações:

  • O número de slots disponíveis para um aplicativo depende do plano. O plano de Consumo só é permitido para um slot de implantação. Mais slots estão disponíveis para aplicativos em execução em outros planos. Confira Limites de serviço para obter detalhes.
  • A troca de slot redefine as chaves para os aplicativos que têm uma configuração de aplicativo AzureWebJobsSecretStorageType igual a files.
  • Quando os slots estão habilitados, seu aplicativo de funções é definido como modo somente leitura no portal.
  • As trocas de slots podem falhar quando o aplicativo de funções está usando uma conta de armazenamento segura como a conta de armazenamento padrão (definida emAzureWebJobsStorage). Para obter mais informações, confira a referência do WEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS.
  • Use nomes de aplicativo de funções com menos de 32 caracteres. Nomes com mais de 32 caracteres correm o risco de causar conflitos de ID do host.

Próximas etapas