Lançamentos canário com Actions
Implemente padrões de lançamento canário para disponibilizar novos recursos gradualmente a um subconjunto de usuários, monitorando desempenho e estabilidade.
Lançamentos canário com Actions é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.
Introdução às versões canário
Imagine lançar um novo recurso ou atualização. E se houver um erro que afete todos os seus usuários? Assustador, não é?
As versões canário ajudam a reduzir esse risco, disponibilizando as alterações gradualmente primeiro para um pequeno subconjunto de usuários. É como enviar um "canário para uma mina de carvão" para testar o ar antes que todos entrem.
Benefícios das versões canário
As versões canário oferecem vários benefícios importantes:
- Risco reduzido: limite o impacto dos problemas a um pequeno grupo de usuários.
- Feedback do mundo real: obtenha dados de produção sobre desempenho e estabilidade.
- Reversão rápida: se surgirem problemas, reverta rapidamente apenas o pequeno grupo canário ou todo o serviço.
- Exposição controlada: aumente gradualmente a exposição dos usuários à medida que a confiança cresce.
Canário versus azul/verde
Talvez você se lembre das implantações azul/verde, nas quais o tráfego é alternado instantaneamente entre dois ambientes idênticos.
As versões canário são diferentes. Em vez de uma troca instantânea, elas envolvem uma mudança gradual do tráfego. Uma nova versão é executada paralelamente à antiga, e inicialmente apenas uma pequena porcentagem dos usuários vê a nova versão. Isso permite um monitoramento detalhado antes da disponibilização completa.
Como funcionam as versões canário
Este é o fluxo básico de uma versão canário:
- Implantar a nova versão: uma nova versão do aplicativo é implantada em um pequeno conjunto de servidores ou instâncias, paralelamente à versão estável existente.
- Direcionar uma pequena parcela do tráfego: um balanceador de carga ou uma malha de serviços é configurado para enviar uma pequena porcentagem (por exemplo, 5–10%) do tráfego dos usuários para a nova versão.
- Monitorar: o desempenho, as taxas de erros e o feedback dos usuários são monitorados atentamente no grupo canário.
- Promover ou reverter: se tudo parecer correto, o tráfego será aumentado gradualmente ou a nova versão será promovida para 100%. Se ocorrerem problemas, a versão canário será revertida e o tráfego será redirecionado para a versão estável.
Orquestração com GitHub Actions
GitHub Actions pode orquestrar todo o processo de lançamento canário. Ele não gerencia o tráfego diretamente (essa é uma tarefa da sua infraestrutura), mas aciona as etapas:
- Compilar e testar sua aplicação.
- Implantar a nova versão em um ambiente canário.
- Iniciar mudanças de tráfego por meio de chamadas de API ao seu balanceador de carga ou à sua malha de serviços.
- Aguardar os resultados do monitoramento ou aprovações manuais.
- Promover o canário ou acionar uma reversão.
Estrutura de um fluxo de trabalho canário
Um fluxo de trabalho típico do GitHub Actions para um lançamento canário poderia ser assim:
name: Canary Deployment
on: push
jobs:
build:
# ... build and test steps ...
deploy-canary:
needs: build
steps:
- name: Deploy to Canary Group
# ... call script/tool to deploy and shift 10% traffic ...
monitor-canary:
needs: deploy-canary
# ... wait for monitoring/approval ...
promote-or-rollback:
needs: monitor-canary
# ... conditionally promote to 100% or rollback ...Cada etapa interagiria com suas ferramentas de implantação.
Simulação da lógica de uma distribuição canária
Embora o GitHub Actions faça a orquestração, as decisões efetivas e os comandos de implantação geralmente acontecem em scripts. Veja um exemplo em Python que simula a lógica de uma distribuição canária. Imagine uma Action executando este script:
def deploy_version(version, traffic_percent):
print(f"Deploying {version} to {traffic_percent}% traffic.")
if traffic_percent == 100:
print("Full rollout complete!")
elif traffic_percent > 0:
print("Canary deployed. Monitoring for stability...")
else:
print("Version removed (rollback).")
if __name__ == "__main__":
print("--- Starting Canary Workflow ---")
new_app_version = "v2.1-canary"
stable_app_version = "v2.0"
# Step 1: Deploy new version to 10% traffic
deploy_version(new_app_version, 10)
# Step 2: Simulate monitoring (e.g., waiting for metrics)
print("Monitoring canary performance...")
import random
canary_successful = random.choice([True, True, True, False]) # 75% chance of success
if canary_successful:
print("Canary looks good! Proceeding to full rollout.")
# Step 3a: Promote new version to 100%
deploy_version(new_app_version, 100)
else:
print("Canary issues detected! Rolling back.")
# Step 3b: Rollback to stable version
deploy_version(stable_app_version, 100)
print("--- Canary Workflow Finished ---")Monitoramento do seu canário
Um monitoramento eficaz é fundamental. Seu fluxo de trabalho do GitHub Actions pode ser integrado a sistemas de monitoramento de várias maneiras:
- Chamadas de API: Consultar ferramentas de monitoramento (por exemplo, Datadog e Prometheus) em busca de métricas importantes.
- Verificações de integridade: Consultar periodicamente os endpoints de integridade da aplicação.
- Barreiras manuais: Pausar o fluxo de trabalho para análise e aprovação humanas.
- Esperas baseadas em tempo: Aguardar um período definido para que as métricas se estabilizem.
Em seguida, o fluxo de trabalho usa esses sinais para decidir se deve promover ou reverter.
Promoção ou reversão condicional
Após a fase de monitoramento, o GitHub Actions usa uma lógica condicional para decidir a próxima etapa. Você pode usar instruções if nas definições do seu trabalho ou da sua etapa.
promote-or-rollback:
needs: monitor-canary
if: success() && needs.monitor-canary.outputs.canary_ok == 'true'
steps:
- name: Promote Full Rollout
# ... command to shift 100% traffic to new version ...
rollback:
needs: monitor-canary
if: failure() || needs.monitor-canary.outputs.canary_ok == 'false'
steps:
- name: Rollback to Stable
# ... command to shift 100% traffic to old version ...Isso garante uma reação automática ao desempenho do canário.
Verificação do lançamento canário
Você aprendeu sobre os benefícios e o funcionamento dos lançamentos canários. Vamos testar sua compreensão.
Recapitulação: lançamentos canários com Actions
Nesta lição, você aprendeu sobre lançamentos canários, uma estratégia poderosa de implantação para disponibilizar gradualmente novas versões de software a um subconjunto de usuários.
- Os lançamentos canários minimizam os riscos e fornecem feedback do mundo real.
- O GitHub Actions orquestra a compilação, a implantação no ambiente canário, o monitoramento e as etapas condicionais de promoção ou reversão.
- O monitoramento eficaz e a lógica condicional são fundamentais para pipelines canários bem-sucedidos.
Ao usar canários, você pode implantar com mais confiança e controle!
Aprenda DevOps Bootcamp com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 142
- Aulas
- 568
Perguntas Frequentes
A aula “Lançamentos canário com Actions” é grátis?
Sim — o texto completo de “Lançamentos canário com Actions” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.
O que vou aprender em “Lançamentos canário com Actions”?
Implemente padrões de lançamento canário para disponibilizar novos recursos gradualmente a um subconjunto de usuários, monitorando desempenho e estabilidade. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar DevOps Bootcamp?
Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Lançamentos canário com Actions”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de DevOps Bootcamp?
Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Implantações azul/verde
- Lançamentos canário com Actions
- Reversões e recuperação de desastres
- Sinalizadores de recursos e lançamentos progressivos