Estratégias de implantação azul-verde no Azure Spring Apps

Nota

Os planos Basic, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de aposentadoria de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.

O plano de consumo padrão e dedicado será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte Migrar consumo padrão e plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.

Este artigo aplica-se a: ✔️ Basic/Standard ✔️ Enterprise

Este artigo descreve o suporte de implantação azul-verde no Azure Spring Apps.

Azure Spring Apps (plano Standard e superior) permite duas implantações para cada aplicativo, apenas um dos quais recebe tráfego de produção. Esse padrão é comumente conhecido como implantação azul-verde. O suporte do Azure Spring Apps para implantação azul-verde, juntamente com um pipeline de Entrega Contínua (CD) e testes automatizados rigorosos, permite implantações ágeis de aplicativos com alta confiança.

Implantações alternadas

A maneira mais simples de implementar a implantação azul-verde com o Azure Spring Apps é criar duas implantações fixas e sempre implantar na implantação que não está recebendo tráfego de produção. Com a tarefa Azure Spring Apps para Azure Pipelines, você pode implantar dessa maneira apenas definindo o UseStagingDeployment sinalizador como true.

Veja como a abordagem de implantações alternadas funciona na prática:

Suponha que seu aplicativo tenha duas implantações: deployment1 e deployment2. Atualmente, deployment1 é definido como a implantação de produção e está executando a versão v3 do aplicativo.

Isso torna deployment2 a implantação de preparo. Assim, quando o pipeline de Entrega Contínua (CD) estiver pronto para ser executado, ele implantará a próxima versão do aplicativo, versão v4, na implantação deployment2de preparo.

Diagrama que mostra deployment1 com v3 recebendo tráfego de produção e deployment2 preparo v4.

Depois de v4 iniciado no deployment2, você pode executar testes automatizados e manuais em relação a ele por meio de um ponto de extremidade de teste privado para garantir que v4 atenda a todas as expectativas.

Diagrama que mostra a V4 implantada na implantação2 e em fase de teste.

Quando você tiver confiança no v4, poderá definir deployment2 como a implantação de produção para que ele receba todo o tráfego de produção. v3 permanecerá em deployment1 execução caso você descubra um problema crítico que exija reversão.

Diagrama que mostra V4 na implantação2 recebendo tráfego de produção.

Agora, deployment1 é a implantação de preparação. Portanto, a próxima execução do pipeline de implantação será implantada no deployment1.

Diagrama que mostra V5 preparada para implantação1.

Agora você pode testar V5 no deployment1ponto de extremidade de teste privado do .

Diagrama que mostra V5 testado na implantação1.

Finalmente, depois de v5 atender a todas as suas expectativas, você define deployment1 como a implantação de produção mais uma vez, para que v5 receba todo o tráfego de produção.

Diagrama que mostra V5 recebendo tráfego de produção na implantação1.

Compensações da abordagem de implantações alternadas

A abordagem de implantações alternadas é simples e rápida, pois não requer a criação de novas implantações. No entanto, apresenta várias desvantagens, conforme descrito nas secções seguintes.

Implantação de preparo persistente

A implantação de preparo sempre permanece em execução e, portanto, consumindo recursos da instância do Azure Spring Apps. Isso efetivamente dobra os requisitos de recursos de cada aplicativo no Azure Spring Apps.

A condição da corrida de aprovação

Suponha que, no aplicativo acima, o pipeline de liberação exija aprovação manual antes que cada nova versão do aplicativo possa receber tráfego de produção. Isso cria o risco de que, enquanto uma versão (v6) aguarda aprovação manual na implantação de preparo, o pipeline de implantação será executado novamente e o substituirá por uma versão mais recente (v7). Em seguida, quando a aprovação for v6 concedida, o pipeline implantado v6 definirá a implantação de preparo como produção. Mas agora será o não aprovado v7, não o aprovado v6, que é implantado nessa implantação e recebe tráfego.

Diagrama que mostra a condição de corrida de aprovação descrita nesta seção.

Talvez seja possível evitar a condição de corrida garantindo que o fluxo de implantação de uma versão não possa começar até que o fluxo de implantação de todas as versões anteriores seja concluído ou abortado. Outra maneira de evitar a condição de corrida de aprovação é usar a abordagem de implantações nomeadas descrita abaixo.

Implantações nomeadas

Na abordagem de implantações nomeadas, uma nova implantação é criada para cada nova versão do aplicativo que está sendo implantado. Depois que o aplicativo é testado em sua implantação personalizada, essa implantação é definida como a implantação de produção. A implantação que contém a versão anterior pode persistir apenas o tempo suficiente para ter certeza de que uma reversão não será necessária.

Na ilustração abaixo, a versão v5 está sendo executada na implantação deployment-v5. O nome da implantação agora contém a versão porque a implantação foi criada especificamente para essa versão. Não há outra implantação no início. Agora, para implantar a versão v6, o pipeline de implantação cria uma nova implantação deployment-v6 e implanta a versão v6 do aplicativo lá.

Diagrama que mostra a implantação de uma nova versão em uma implantação nomeada, conforme descrito nesta seção.

Não há risco de outra versão ser implantada em paralelo. Primeiro, o Azure Spring Apps não permite a criação de uma terceira implantação enquanto já existem duas implantações. Em segundo lugar, mesmo que fosse possível ter mais de duas implantações, cada implantação é identificada pela versão do aplicativo que contém. Assim, o pipeline orquestrando a implantação do apenas tentaria definir deployment-v6 como a implantação de v6 produção.

Diagrama que mostra v6 implantado na deployment-v6 e recebendo tráfego de produção.

Depois que a implantação criada para a nova versão receber tráfego de produção, você precisará remover a implantação que contém a versão anterior para abrir espaço para implantações futuras. Você pode querer adiar por algum número de minutos ou horas para que possa reverter para a versão anterior se descobrir um problema crítico na nova versão.

Diagrama que mostra que, após um período de fallback, a implantação anterior é excluída.

Compensações da abordagem de implantações nomeadas

A abordagem de implantações nomeadas tem os seguintes benefícios:

  • Impede a condição de corrida de aprovação.
  • Ele reduz o consumo de recursos excluindo a implantação de preparo quando ela não está em uso.

No entanto, também há desvantagens, conforme descrito na seção a seguir.

Falhas no pipeline de implantação

Entre o momento em que uma implantação é iniciada e o momento em que a implantação de preparo é excluída, quaisquer tentativas adicionais de executar o pipeline de implantação falharão. O pipeline tentará criar uma nova implantação, o que resultará em um erro porque apenas duas implantações são permitidas por aplicativo no Azure Spring Apps.

Portanto, a orquestração de implantação deve ter os meios para repetir um processo de implantação com falha em um momento posterior ou os meios para garantir que os fluxos de implantação para cada versão permaneçam na fila até que o fluxo seja concluído para todas as versões anteriores.

Próximos passos