Slots de implantação do Azure Functions

Os slots de implantação do Azure Functions permitem que seu aplicativo de função execute diferentes instâncias chamadas slots. Os slots são ambientes diferentes expostos por meio de um ponto de extremidade disponível publicamente. 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ção executados em um plano de consumo têm um único slot extra para preparação. Você pode obter mais slots de preparo executando seu aplicativo em um plano Premium ou Dedicado (Serviço de Aplicativo). Para obter mais informações, consulte Limites de serviço.

Os itens a seguir refletem como as funções são afetadas pela troca de slots:

  • O redirecionamento do tráfego é perfeito; nenhuma solicitação é descartada por causa de uma troca. Esse comportamento contínuo ocorre porque o próximo gatilho de função é roteado para o slot trocado.
  • A função atualmente em execução é encerrada durante a troca. Para saber como escrever funções defensivas e sem monitoração de estado, consulte Melhorar o desempenho e a fiabilidade do Azure Functions.

Porquê utilizar slots?

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

  • Ambientes diferentes para finalidades diferentes: o uso de slots diferentes oferece a oportunidade de diferenciar instâncias de aplicativos antes de trocar para produção ou um slot de preparação.
  • Pré-aquecimento: a implantação em um slot em vez de diretamente na produção permite que o aplicativo aqueça antes de entrar no ar. Além disso, o uso de slots reduz a latência para cargas de trabalho acionadas por HTTP. As instâncias são aquecidas antes da implantação, o que reduz o arranque a frio para funções recém-implantadas.
  • Fallbacks fáceis: após uma troca com a produção, o slot com um aplicativo previamente preparado agora tem o aplicativo de produção anterior. Se as alterações trocadas para o slot de produção não forem as esperadas, você pode reverter imediatamente a troca para recuperar sua "última instância válida".
  • 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 alteradas para produção por uma instância pré-aquecida. Os slots são a maneira recomendada de migrar entre versões de tempo de execução do Functions, mantendo a mais alta disponibilidade. Para saber mais, consulte Atualização mínima de tempo de inatividade.

Operações de swap

Durante uma troca, um slot é considerado a fonte e o outro é o alvo. 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 sofra tempo de inatividade durante uma 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 reinicializações e disponibilidade: a troca aguarda que cada instância no slot de origem conclua sua reinicialização e esteja disponível para solicitações. Se alguma instância falhar ao reiniciar, a operação de permuta reverte todas as alterações para o slot de origem e interrompe a operação.

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

  4. Operação repetida: Agora que o slot de origem tem o aplicativo de pré-troca anteriormente no slot de destino, conclua a mesma operação aplicando todas as configurações e reiniciando as instâncias do slot de origem.

Tenha em consideração os seguintes pontos:

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

  • Para trocar um slot de preparação pelo slot de produção, certifique-se de que o slot de produção seja sempre o slot de destino. Dessa forma, a operação de permuta não afeta seu aplicativo de produção.

  • As configurações relacionadas a fontes de eventos e associações devem ser definidas como configuraçõesde slot de implantação antes de iniciar uma troca. Marcá-los como "pegajosos" com antecedência garante que os eventos e saídas sejam direcionados para a instância adequada.

Gerir definições

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

Configurações específicas do slot:

  • Publicação de pontos de extremidade
  • Nomes de domínio personalizados
  • Certificados não públicos e configurações TLS/SSL
  • Configurações de escala
  • Restrições de IP
  • Sempre Ativo
  • Definições de diagnóstico
  • Partilha de recursos transversais à origem (CORS)
  • Pontos finais privados

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

  • Configurações gerais, como versão do framework, 32/64-bit, web sockets
  • Configurações do aplicativo (pode ser configurado para manter um slot)
  • Cadeias de conexão (podem ser configuradas para aderir a um slot)
  • Mapeamentos do manipulador
  • Certificados públicos
  • Conexões híbridas *
  • Integração de rede virtual *
  • Pontos finais de serviço *
  • Rede de Entrega de Conteúdo do Azure *

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

Nota

Determinadas configurações de aplicativo que se aplicam a configurações não trocadas também não são trocadas. Por exemplo, como as configurações de diagnóstico não são trocadas, as configurações de aplicativos 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 uma configuração de implantação

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

Se você criar uma configuração de implantação em um slot, certifique-se de criar a mesma configuração com um valor exclusivo em qualquer outro slot envolvido em uma troca. Dessa forma, enquanto o valor de uma configuração não é alterado, os nomes das configurações 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 outro.

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

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

    Find slots in the Azure portal.

  2. Selecione Configuração e, em seguida, selecione o nome da configuração que deseja manter com o slot atual.

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

  3. Selecione Configuração do slot de implantação e, em seguida, selecione 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.

Implementação

Os slots ficam vazios quando você cria um slot. Você pode usar qualquer uma das tecnologias de implantação suportadas para implantar seu aplicativo em um slot.

Dimensionamento

Todas as faixas horárias são dimensionadas para o mesmo número de trabalhadores que a faixa horária de produção.

  • Para planos de consumo, o slot é dimensionado à medida que o aplicativo de função é dimensionado.
  • Para planos do Serviço de Aplicativo, o aplicativo é dimensionado para um número fixo de trabalhadores. Os slots são executados no mesmo número de trabalhadores que o plano do aplicativo.

Ver 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 serão mostrados.

Adicionar um bloco

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, em seguida, selecione + Adicionar slot.

    Add Azure Functions deployment slot.

  3. Digite o nome do slot e selecione Adicionar.

    Name the Azure Functions deployment slot.

Acessar recursos de slot

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 de host do aplicativo de função, você usa o nome de host específico do slot na URL da solicitação, juntamente com quaisquer chaves específicas do slot. Como os slots de preparo são aplicativos ativos, 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 a produção:

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

  2. Selecione Slots de implantação e, em seguida, selecione Trocar.

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

  3. Verifique as definições de configuração para a sua permuta e selecione Trocar

    Swap the deployment slot.

A operação de swap pode levar alguns segundos.

Reverter uma troca

Se uma troca resultar em um erro ou você simplesmente quiser "desfazer" uma troca, você pode reverter para o estado inicial. Para retornar ao estado preswaped, faça outro swap para reverter o swap.

Remover uma ranhura

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ção e selecione o nome do slot.

    Find slots in the Azure portal.

  2. Selecione Eliminar.

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

  3. Digite o nome do slot de implantação que 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 Aplicações

Com um aplicativo de função em execução em um plano do Serviço de Aplicativo, você pode alterar o plano subjacente do Serviço de Aplicativo para um slot.

Nota

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

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

  1. Navegue até Slots de implantação no aplicativo de função 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 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 um slot de implantação. Mais slots estão disponíveis para aplicativos executados em outros planos. Para obter detalhes, consulte Limites de serviço.
  • A troca de um slot redefine chaves para aplicativos que têm uma AzureWebJobsSecretStorageType configuração de aplicativo igual a files.
  • Quando os slots estão habilitados, seu aplicativo de função é definido para o modo somente leitura no portal.
  • As trocas de slots podem falhar quando seu aplicativo de função estiver usando uma conta de armazenamento segura como sua conta de armazenamento padrão (definida em AzureWebJobsStorage). Para obter mais informações, consulte a WEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS referência.
  • Use nomes de aplicativos de função com menos de 32 caracteres. Nomes com mais de 32 caracteres correm o risco de causar colisões de ID de host.

Próximos passos