08 · Estratégias de deploy e release
Separe implantar (técnico, frequente, reversível) de liberar (decisão de negócio, via feature flag). Isso reduz risco sem reduzir frequência.
| Estratégia | Quando usar | Como no Azure DevOps |
|---|---|---|
| Rolling update | Serviços sem estado com várias instâncias | strategy: rolling em environments de VM |
| Canary | Mudança de risco médio/alto com tráfego suficiente para medir | strategy: canary (nativo em Kubernetes) ou pesos no proxy |
| Blue-green | Troca instantânea e rollback em segundos | runOnce + hook routeTraffic trocando o upstream (nginx/Traefik) |
| Feature flag / dark launch | Liberar por público, testar em produção sem expor | Unleash, Azure App Configuration ou OpenFeature (fora do Azure DevOps) |
| Shadow traffic | Validar um serviço novo com tráfego real sem usar a resposta | Mirror no proxy (nginx mirror, Envoy) |
Recuperação
- Rollback: reexecutar o stage de deploy de um run anterior; funciona porque o artefato é imutável e o deploy é idempotente. Automatizado no hook
on: failure. - Roll forward: preferido quando há migração de dados; usa o mesmo pipeline, com caminho rápido de hotfix.
- Migrações de banco compatíveis com a versão anterior (expand/contract), para que o rollback seja sempre possível.
Controle de mudança
- Change management: mudanças padrão (pipeline verde, template aprovado) são pré-aprovadas; aprovação humana só para mudança normal ou emergencial. Integração com ITSM via check (ex.: ServiceNow) quando exigido.
- Deployment freeze: check de business hours ou check customizado consultando um calendário central de freeze; exceções registradas.
- Release management: histórico de deploys por Environment, release notes geradas a partir dos work items, e Delivery Plans para coordenar releases entre times.
Indicadores: D7 · Deploy e release