

# Implantações canário do Amazon ECS
<a name="canary-deployment"></a>

As implantações canário primeiro direcionam uma pequena porcentagem do tráfego para a nova revisão para o teste inicial e, em seguida, transferem todo o tráfego restante de uma vez após a conclusão bem-sucedida da fase canário. Com as implantações canário do Amazon ECS, valide as novas revisões de serviços com tráfego de usuário real, minimizando a exposição ao risco. Essa abordagem fornece uma maneira controlada de implantar alterações com a capacidade de monitorar a performance e revertê-las rapidamente se forem detectados problemas.

## Recursos envolvidos em uma implantação canário
<a name="canary-deployment-resources"></a>

Veja a seguir os recursos envolvidos nas implantações canário do Amazon ECS:
+ Mudança de tráfego: o processo que o Amazon ECS usa para transferir o tráfego de produção. Para implantações canárias do Amazon ECS, o tráfego é transferido em duas fases: primeiro para a porcentagem canário e, em seguida, para concluir a implantação.
+ Porcentagem canário: a porcentagem de tráfego roteado para a nova versão durante o período de avaliação.
+ Tempo de incorporação canário: a duração para monitorar a versão canário antes de prosseguir com a implantação completa.
+ Tempo de incorporação da implantação: o tempo, em minutos, que o Amazon ECS espera após transferir todo o tráfego de produção para a nova revisão de serviço, antes de encerrar a revisão antiga. Essa é a duração em que as revisões de serviço azul e verde são executadas simultaneamente após a mudança do tráfego de produção.
+ Estágios do ciclo de vida: uma série de eventos na operação de implantação, como “após a mudança no tráfego de produção”.
+ Gancho do ciclo de vida: uma função do Lambda que executa um estágio específico do ciclo de vida. Você pode criar uma função que verifica a implantação.
+ Grupo de destino: um recurso do Elastic Load Balancing usado para rotear solicitações para um ou mais destinos registrados (por exemplo, instâncias do EC2). Ao criar um listener, especifique um grupo de destino para a ação padrão dele. O tráfego é encaminhado para o grupo de destino especificado na regra do listener.
+ Receptor: um recurso do Elastic Load Balancing que verifica solicitações de conexão usando o protocolo e a porta que você configurou. As regras que você define para um receptor determinam como o Amazon ECS roteia solicitações para seus destinos registrados.
+ Regra: um recurso do Elastic Load Balancing associado a um receptor. Uma regra define como as solicitações são roteadas e consiste em uma ação, condição e prioridade.

## Considerações
<a name="canary-deployment-considerations"></a>

Considere o seguinte ao escolher um tipo de implantação:
+ Uso de recursos: as implantações canário executam conjuntos de tarefas originais e canário simultaneamente durante o período de avaliação, aumentando o uso de recursos.
+ Volume de tráfego: garanta que a porcentagem canário gere tráfego suficiente para uma validação significativa da nova versão.
+ Complexidade do monitoramento: as implantações canário exigem monitoramento e comparação de métricas entre duas versões diferentes simultaneamente.
+ Velocidade de reversão: as implantações canário permitem uma reversão rápida, transferindo o tráfego de volta para o conjunto de tarefas original.
+ Mitigação de riscos: as implantações canário oferecem excelente mitigação de riscos, limitando a exposição a uma pequena porcentagem de usuários.
+ Duração da implantação: as implantações canário incluem períodos de avaliação que estendem o tempo geral de implantação, mas oferecem oportunidades de validação.

## Como funcionam as implantações canário
<a name="canary-how-it-works"></a>

O processo de implantação canário do Amazon ECS segue uma abordagem estruturada com seis fases distintas que garantem atualizações seguras e confiáveis das aplicações. Cada fase tem um propósito específico na validação e transição da aplicação da versão atual (azul) para a nova versão (verde).

1. Fase de preparação: crie o ambiente verde junto com o ambiente azul existente.

1. Fase de implantação: implante a nova revisão do serviço no ambiente verde. O Amazon ECS lança novas tarefas usando a revisão atualizada do serviço, enquanto o ambiente azul continua atendendo ao tráfego de produção.

1. Fase de teste: valide o ambiente verde usando o roteamento de tráfego de teste. O Application Load Balancer direciona as solicitações de teste para o ambiente verde, enquanto o tráfego de produção permanece no azul.

1. Fase de mudança de tráfego canário: mude a porcentagem configurada de tráfego para a nova revisão de serviço verde durante a fase canário, seguida pela transferência de 100,0% do tráfego para a revisão de serviço verde

1. Fase de monitoramento: monitore a integridade da aplicação, as métricas de performance e os estados dos alarmes durante o tempo de incorporação. Uma operação de reversão é iniciada quando problemas são detectados.

1. Fase de conclusão: finalize a implantação encerrando o ambiente azul.

A fase de mudança de tráfego canário segue estas etapas:
+ Inicial: a implantação começa com 100% do tráfego roteado para a revisão de serviço azul (atual). A revisão de serviço verde (nova) recebe tráfego de teste, mas nenhum tráfego de produção inicialmente.
+ Mudança de tráfego canário: essa é uma estratégia de mudança de tráfego em duas etapas.
  + Etapa 1: 10,0% para verde, 90,0% para azul
  + Etapa 2 :100,0% para verde, 0,0% para azul
+ Tempo de incorporação canário: aguarda uma duração configurável (tempo de incorporação canário) após a mudança de tráfego canário para permitir o monitoramento e a validação da performance da nova revisão com o aumento da carga de tráfego.
+ Ganchos do ciclo de vida: as funções do Lambda opcionais podem ser executadas em vários estágios do ciclo de vida durante a implantação para executar validação automatizada, monitoramento ou lógica personalizada. As funções do Lambda ou os ganchos do ciclo de vida configurados para PRODUCTION\$1TRAFFIC\$1SHIFT serão invocados em cada etapa de mudança de tráfego de produção.

### Estágios do ciclo de vida de implantação
<a name="canary-deployment-lifecycle-stages"></a>

O processo de implantação canário percorre diferentes estágios do ciclo de vida, cada um com responsabilidades específicas e pontos de verificação de validação. A compreensão desses estágios ajuda você a monitorar o andamento da implantação e solucionar problemas de forma eficaz.

Cada estágio do ciclo de vida pode durar até 24 horas e, além disso, cada etapa de mudança de tráfego em PRODUCTION\$1TRAFFIC\$1SHIFT pode durar até 24 horas. Recomendamos que o valor permaneça abaixo da marca de 24 horas. Isso ocorre porque os processos assíncronos precisam de tempo para acionar os ganchos. O sistema atinge o tempo limite, falha na implantação e, em seguida, inicia uma reversão após um estágio atingir 24 horas.

As implantações CloudFormation têm restrições adicionais de tempo limite. Embora o limite de estágio de 24 horas permaneça em vigor, o CloudFormation impõe um limite de 36 horas em toda a implantação. A implantação do CloudFormation falha e, em seguida, iniciará uma reversão se o processo não for concluído em até 36 horas.


**Estágios do ciclo de vida**  

| Estágios do ciclo de vida | Descrição | Suporte de gancho do ciclo de vida | 
| --- | --- | --- | 
| RECONCILE\$1SERVICE | Este estágio só acontece quando você inicia uma nova implantação de serviço com mais de uma revisão de serviço em um estado ACTIVE. | Sim | 
| PRE\$1SCALE\$1UP | A revisão do serviço verde ainda não foi iniciada. A revisão do serviço azul está processando 100% do tráfego de produção. Não há tráfego de teste. | Sim | 
| SCALE\$1UP | O momento em que a revisão do serviço verde aumenta a escala verticalmente até 100% e inicia novas tarefas. A revisão do serviço verde não está recebendo nenhum tráfego neste momento. | Não | 
| POST\$1SCALE\$1UP | A revisão do serviço verde foi iniciada. A revisão do serviço azul está processando 100% do tráfego de produção. Não há tráfego de teste. | Sim | 
| TEST\$1TRAFFIC\$1SHIFT | As revisões do serviço azul e verde estão em execução. A revisão do serviço azul processa 100% do tráfego de produção. A revisão do serviço verde está migrando de 0% para 100% do tráfego de teste. | Sim | 
| POST\$1TEST\$1TRAFFIC\$1SHIFT | A mudança de tráfego de teste foi concluída. A revisão do serviço verde processa 100% do tráfego de teste. | Sim | 
| PRODUCTION\$1TRAFFIC\$1SHIFT | O tráfego de produção canário é encaminhado para a revisão verde e o gancho do ciclo de vida é invocado com um tempo limite de 24 horas. A segunda etapa transfere o tráfego de produção restante para a revisão verde. | Sim | 
| POST\$1PRODUCTION\$1TRAFFIC\$1SHIFT | A mudança do tráfego de produção está concluída. | Sim | 
| BAKE\$1TIME | A duração em que as revisões de serviço azul e verde são executadas simultaneamente. | Não | 
| CLEAN\$1UP | A revisão do serviço azul teve a escala reduzida verticalmente por completo para 0 tarefa em execução. A revisão do serviço verde agora é a revisão do serviço de produção após esse estágio. | Não | 

### Parâmetros de configuração
<a name="canary-configuration-parameters"></a>

As implantações canário exigem os seguintes parâmetros de configuração:
+ Porcentagem canário: a porcentagem de tráfego a ser roteada para a nova revisão de serviço durante a fase canário. Isso permite fazer testes com um subconjunto controlado do tráfego de produção.
+ Tempo de incorporação canário: o tempo de espera durante a fase canário antes de transferir o tráfego restante para a nova revisão de serviço. Isso possibilita um tempo para monitorar e validar a nova versão.

### Gerenciamento de tráfego
<a name="canary-traffic-management"></a>

As implantações canário usam grupos de destino do balanceador de carga para gerenciar a distribuição do tráfego:
+ Grupo de destino original: contém tarefas da versão estável atual e recebe a maior parte do tráfego.
+ Grupo de destino canário: contém tarefas da nova versão e recebe uma pequena porcentagem do tráfego para testes.
+ Roteamento ponderado: o balanceador de carga usa regras de roteamento ponderado para distribuir o tráfego entre os grupos de destino com base na porcentagem canário configurada.

### Monitoramento e validação
<a name="canary-monitoring-validation"></a>

As implantações canário eficazes dependem de um monitoramento abrangente:
+ Verificações de integridade: ambos os conjuntos de tarefas devem passar por verificações de integridade antes de receber tráfego.
+ Comparação de métricas: compare os principais indicadores de performance entre as versões original e canário, como tempo de resposta, taxa de erro e throughput.
+ Reversão automatizada: configure os alarmes do CloudWatch para acionar automaticamente a reversão se a versão canário mostrar performance degradada.
+ Validação manual: use o período de avaliação para revisar manualmente os logs, as métricas e o feedback do usuário antes de continuar.

### Práticas recomendadas para implantações canário
<a name="canary-best-practices"></a>

Siga essas práticas recomendadas para garantir implantações canário bem-sucedidas com serviços.

#### Escolher porcentagens de tráfego apropriadas
<a name="canary-traffic-percentage"></a>

Considere estes fatores ao selecionar as porcentagens de tráfego canário:
+ Comece aos poucos: comece com 5% a 10% do tráfego para minimizar o impacto caso ocorram problemas.
+ Considere a criticidade da aplicação: use porcentagens menores para aplicações de missão crítica e porcentagens maiores para serviços menos críticos.
+ Considere o volume de tráfego: garanta que a porcentagem canário gere tráfego suficiente para uma validação significativa.

#### Definir períodos de avaliação apropriados
<a name="canary-evaluation-time"></a>

Configure períodos de avaliação com base nestas considerações:
+ Reserve tempo suficiente: defina períodos de avaliação longos o suficiente para capturar dados de performance significativos, normalmente de 10 a 30 minutos.
+ Considere os padrões de tráfego: leve em conta os padrões de tráfego e os horários de pico de uso da aplicação.
+ Equilibre velocidade e segurança: períodos de avaliação mais longos fornecem mais dados, mas diminuem a velocidade da implantação.

#### Implementar um monitoramento abrangente
<a name="canary-monitoring-setup"></a>

Configure o monitoramento para rastrear a performance da implantação canário:
+ Principais métricas: monitore o tempo de resposta, a taxa de erro, o throughput e a utilização de recursos para ambos os conjuntos de tarefas.
+ Reversão baseada em alarme: configure os alarmes do CloudWatch para acionar automaticamente a reversão quando as métricas excederem os limites.
+ Análise comparativa: configure painéis para comparar métricas entre as versões original e canário lado a lado.
+ Métricas de negócios: inclua métricas específicas de negócios, como taxas de conversão ou engajamento do usuário, em conjunto com métricas técnicas.

#### Planejar estratégias de reversão
<a name="canary-rollback-strategy"></a>

Prepare-se para possíveis cenários de reversão com estas estratégias:
+ Reversão automática: configure acionadores automáticos de reversão com base em verificações de integridade e métricas de performance.
+ Procedimentos de reversão manual: documente procedimentos claros para reversão manual quando os acionadores automatizados não capturam todos os problemas.
+ Teste de reversão: teste regularmente os procedimentos de reversão para garantir que funcionem corretamente quando necessários.

#### Validar completamente antes da implantação
<a name="canary-testing-validation"></a>

Garanta uma validação completa antes de prosseguir com as implantações canário:
+ Teste de pré-implantação: teste minuciosamente as mudanças nos ambientes de preparação antes da implantação canário.
+ Configuração da verificação de integridade: garanta que as verificações de integridade reflitam exatamente a prontidão e a funcionalidade da aplicação.
+ Validação de dependência: verifique se as novas versões são compatíveis com os serviços downstream e upstream.
+ Consistência de dados: garanta que as alterações de esquema do banco de dados e as migrações de dados sejam compatíveis com versões anteriores.

#### Coordenar o envolvimento da equipe
<a name="canary-team-coordination"></a>

Garanta uma coordenação eficaz da equipe durante as implantações canário:
+ Janelas de implantação: programe implantações canário durante o horário comercial, quando as equipes estiverem disponíveis para monitorar e responder.
+ Canais de comunicação: estabeleça canais de comunicação claros para o status da implantação e o escalonamento de problemas.
+ Atribuições de perfis: defina perfis e responsabilidades para monitoramento, tomada de decisões e execução de reversão.