From dev-team-kit-fv
Promotes approved releases in production using canary strategies (traffic-based, feature flag, blue-green) with continuous metric observation and automatic rollback to limit blast radius.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dev-team-kit-fv:43-canary-deploymentThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
O Canary Deployment fecha o gap entre release-manager (skill 24, que decide o que sai) e deploy
O Canary Deployment fecha o gap entre release-manager (skill 24, que decide o que sai) e deploy (skill 07, que coloca em producao): assume um artefato ja aprovado, promove em fatias controladas e observa metricas em tempo real para decidir progredir ou reverter. O objetivo nao e empacotar — e limitar o impacto de uma regressao desconhecida.
Esta skill segue GLOBAL.md, policies/execution.md, policies/handoffs.md,
policies/quality-gates.md, policies/verification-before-completion.md (toda transicao de step
exige output verificavel da metrica que liberou a passagem) e policies/stack-flexibility.md (sem
amarrar a runtime especifico).
Quando memory/constitution.md existe:
Bloqueio: se baseline nao existe ou error budget esta esgotado, nao iniciar canary. Registrar exception em ADR antes (raramente justificavel).
Roteia uma fracao do trafego real para a nova versao usando weighting no load balancer, service mesh (Istio, Linkerd) ou ingress controller. Escada padrao:
Step 0: 0% (versao nova publicada mas sem trafego) — health check passa
Step 1: 1% — soak 10-15 min — observar 5xx, p95, erros estruturados
Step 2: 10% — soak 30 min — primeiro sinal de regressao agregada
Step 3: 50% — soak 60 min — confirmar estabilidade sob carga proxima do real
Step 4: 100% — promover, manter versao antiga por 24h para rollback rapido
Pseudocodigo agnostico de stack:
# Kubernetes + service mesh
kubectl apply -f canary-1pct.yaml # weighting: stable=99 canary=1
sleep 900 && check_metrics || rollback
kubectl apply -f canary-10pct.yaml
...
# AWS ALB com weighted target groups
aws elbv2 modify-listener \
--default-actions Type=forward,ForwardConfig='{
"TargetGroups":[
{"TargetGroupArn":"...stable...","Weight":99},
{"TargetGroupArn":"...canary...","Weight":1}
]
}'
Versao nova ja esta deployada em 100% das instancias, mas o codigo novo so executa quando flag ativa. Roteamento de quem ve o que e decidido em runtime:
# Pseudo-API generica de flag SDK
if flag.is_enabled("new_checkout", user=ctx.user_id,
rollout=Rollout(percent=1, segments=["beta"])):
return new_checkout_flow(ctx)
return legacy_checkout_flow(ctx)
Vantagens sobre traffic-based: granularidade por usuario, segmento ou regiao; abort instantaneo sem redeploy; permite holdout group para A/B. Limites: codigo de ambas as versoes coexiste no binario (overhead de manutencao); requer infraestrutura de flag (LaunchDarkly, Unleash, Flagsmith, ou self-hosted).
Dois ambientes identicos: blue (atual em producao) e green (nova versao). Switch instantaneo via DNS, load balancer ou roteador. Rollback = inverter o switch.
1. Green ambiente paralelo, escala 100% identica ao blue
2. Smoke tests + warmup contra green (sem trafego real)
3. Switch: roteador aponta para green
4. Observar 15-30 min com 100% do trafego em green
5. Se ok: blue vira reserva por 24h, depois desliga
Se falha: switch reverso em segundos
Quando preferir: mudancas que tocam runtime (Node 18 -> 22), framework major, schema de cache incompativel. Custo: dobra a infra temporariamente.
Configurar dashboard unificado e thresholds antes de iniciar o step 1%. Comparar sempre canary vs stable lado a lado, nao canary vs baseline historico (variacao de carga confunde).
| Metrica | Default threshold | Janela de avaliacao | Acao se quebrar |
|---|---|---|---|
| Error rate (5xx/total) | canary < 1% absoluto E canary <= stable + 0.5pp | ultimos 5 min, 2 samples consecutivos | rollback automatico |
| p95 latency | canary <= stable * 1.20 (regressao max 20%) | ultimos 10 min, media movel | rollback automatico |
| p99 latency | canary <= stable * 1.30 | ultimos 10 min | alerta + decisao humana |
| Conversion rate / business KPI | canary >= stable * 0.95 (perda max 5%) | janela conforme volume | alerta + decisao humana |
| 5xx rate por endpoint | nenhum endpoint > 2% em canary | ultimos 5 min | rollback automatico |
| Saturacao (CPU, memoria, conexoes) | canary <= stable * 1.30 | continuo | alerta |
| Custo por request (se IA) | canary <= stable * 1.15 | janela conforme volume | alerta |
Notas:
Gatilhos que disparam reversao sem intervencao humana:
kubectl rollout undo, flag kill switch,
switch blue-green) com permissao de qualquer on-callProcedimento de rollback (deve estar testado em staging):
1. Acionar reversao do step (weighting volta para 100% stable, flag desligada,
switch blue-green revertido)
2. Confirmar via dashboard que trafego retornou para versao anterior (< 2 min)
3. Snapshot de logs/metricas do periodo do canary (window: inicio - 5min ate now)
4. Comunicar canal #releases com link do dashboard e janela do incidente
5. Abrir postmortem dentro de 24h (skill 20 observability-sre lidera, skill 11
reviewer revisa)
Pos-rollback: artefato canary nao volta automaticamente; precisa novo PR ou hotfix. Nunca "tentar de novo" sem fix da causa raiz — rollback repetido queima error budget e confianca.
Status update em cada transicao no canal definido (#releases ou equivalente). Formato sugerido:
[canary <servico> <versao>] step 10% iniciado
- baseline: error 0.3%, p95 240ms
- canary atual: error 0.4%, p95 252ms (+5%)
- soak: 30 min, proxima decisao em ~15:42
- dashboard: <link>
- abort: <comando ou link>
Updates obrigatorios:
Seguir policies/handoffs.md. Devolver para skill 24 (release-manager) em caso de sucesso para
encerrar release oficial, ou para skill 20 (observability-sre) em caso de rollback para conduzir
analise de causa raiz.
Estrategia base e thresholds adaptados do slash command /canary do repositorio
garrytan/gstack (licenca MIT). Conceitos de error budget e
janela de soak alinhados com Google SRE Book (capitulos 4 e 8). Pattern de blue-green e canary
documentado em Continuous Delivery (Humble & Farley, 2010).
npx claudepluginhub felvieira/claude-skills-fv --plugin dev-team-kit-fvSelects and designs deployment strategies (blue-green, canary, rolling) for safe production releases.
Provides deployment plans for blue-green, canary releases, progressive rollouts, automated rollback, feature flag coordination, and zero-downtime migrations. For high-risk changes and rollouts.
Blue-green, canary, rolling deployments, traffic shifting, and safe release strategies.