Testar grátis
9 min leitura Guide 816 of 877

Estratégias de Progressive Delivery

Deploy com confiança. O GitScrum ajuda times a rastrear releases de progressive delivery, garantindo que features cheguem aos usuários com segurança e incrementalmente.

Visão Geral de Progressive Delivery

Estratégias de Deployment

COMPARAÇÃO DE ESTRATÉGIAS DE DEPLOYMENT:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ BIG BANG DEPLOYMENT (Arriscado):                           │
│ ───────────────────────────────                             │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Versão Antiga ────────────→ Versão Nova                ││
│ │ 100% usuários                100% usuários              ││
│ │                                                         ││
│ │ Tudo de uma vez, tudo ou nada                          ││
│ │ Risco: Se quebrar, todos afetados                      ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ BLUE-GREEN DEPLOYMENT:                                      │
│ ──────────────────────                                      │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ BLUE (Antigo) ◄── Tráfego ──► GREEN (Novo)             ││
│ │   v1.0             switch         v1.1                  ││
│ │                                                         ││
│ │ Dois ambientes idênticos                               ││
│ │ Troca de tráfego instantânea                           ││
│ │ Rollback fácil (switch de volta)                       ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ CANARY DEPLOYMENT:                                          │
│ ──────────────────                                          │
│ ┌─────────────────────────────────────────────────────────┐│
│ │                                                         ││
│ │ Tráfego: ──┬──────────────────────────→ Antigo (95%)   ││
│ │            └────────────────────────→ Novo (5%)        ││
│ │                   "Canary"                              ││
│ │                                                         ││
│ │ Pequena porcentagem recebe versão nova                 ││
│ │ Aumentar gradualmente se saudável                      ││
│ │ Detectar problemas cedo                                ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ FEATURE FLAGS:                                              │
│ ──────────────                                              │
│ ┌─────────────────────────────────────────────────────────┐│
│ │                                                         ││
│ │ Código deployed para todos usuários                    ││
│ │ Feature habilitada para subconjunto                    ││
│ │                                                         ││
│ │ if (featureFlag.enabled("new-checkout")) {             ││
│ │   showNewCheckout();                                   ││
│ │ } else {                                                ││
│ │   showOldCheckout();                                   ││
│ │ }                                                       ││
│ │                                                         ││
│ │ Toggle sem deployment                                  ││
│ │ Target usuários/grupos específicos                     ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘

Canary Releases

Rollout Gradual

PROCESSO DE ROLLOUT CANARY:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ ESTÁGIOS DE ROLLOUT:                                        │
│ ────────────────────                                        │
│                                                             │
│ ESTÁGIO 1: Canary (1-5%)                                   │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ █                                               (5%)   ││
│ │ ████████████████████████████████████████████████(95%)  ││
│ │                                                         ││
│ │ Duração: 15-30 minutos                                 ││
│ │ Observar: Taxas de erro, latência                      ││
│ │ Critério: Erros <1%, latência <200ms                   ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ ESTÁGIO 2: Early Adopters (10-25%)                         │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ █████████████                                  (25%)   ││
│ │ ██████████████████████████████████████████     (75%)   ││
│ │                                                         ││
│ │ Duração: 1-2 horas                                     ││
│ │ Observar: Métricas de negócio, comportamento usuário   ││
│ │ Critério: Conversão estável, sem reclamações           ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ ESTÁGIO 3: Maioria (50%)                                   │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ █████████████████████████                      (50%)   ││
│ │ █████████████████████████                      (50%)   ││
│ │                                                         ││
│ │ Duração: 2-4 horas                                     ││
│ │ Observar: Todas métricas estáveis                      ││
│ │ Critério: Sem degradação                               ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ ESTÁGIO 4: Completo (100%)                                 │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ██████████████████████████████████████████████(100%)   ││
│ │                                                         ││
│ │ Rollout completo                                       ││
│ │ Continuar monitorando                                  ││
│ │ Manter rollback pronto                                 ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ CANARY AUTOMATIZADO:                                        │
│ ────────────────────                                        │
│ • Progressão automática baseada em métricas               │
│ • Rollback automático em breach de threshold              │
│ • Gates de aprovação humana opcionais                     │
└─────────────────────────────────────────────────────────────┘

Blue-Green Deployments

Troca de Ambiente

PROCESSO BLUE-GREEN:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ PASSO 1: ESTADO INICIAL                                    │
│ ────────────────────────                                    │
│ ┌─────────────────────────────────────────────────────────┐│
│ │                                                         ││
│ │ LOAD BALANCER ────────────→ BLUE (v1.0) ◄─ ATIVO       ││
│ │                                                         ││
│ │                              GREEN (v1.0) ◄─ IDLE      ││
│ │                                                         ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ PASSO 2: DEPLOY NO IDLE                                    │
│ ────────────────────────                                    │
│ ┌─────────────────────────────────────────────────────────┐│
│ │                                                         ││
│ │ LOAD BALANCER ────────────→ BLUE (v1.0) ◄─ ATIVO       ││
│ │                                                         ││
│ │                              GREEN (v1.1) ◄─ DEPLOYING ││
│ │                                                         ││
│ │ • Deploy versão nova no GREEN                          ││
│ │ • Rodar smoke tests                                    ││
│ │ • Sem tráfego de usuário ainda                         ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ PASSO 3: TROCAR TRÁFEGO                                    │
│ ────────────────────────                                    │
│ ┌─────────────────────────────────────────────────────────┐│
│ │                                                         ││
│ │ LOAD BALANCER ────────────→ GREEN (v1.1) ◄─ ATIVO      ││
│ │                                                         ││
│ │                              BLUE (v1.0) ◄─ IDLE       ││
│ │                                                         ││
│ │ • Switch do load balancer                              ││
│ │ • Todo tráfego agora para GREEN                        ││
│ │ • BLUE pronto para rollback                            ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ PASSO 4: SE PROBLEMA - ROLLBACK                            │
│ ───────────────────────────────                             │
│ ┌─────────────────────────────────────────────────────────┐│
│ │                                                         ││
│ │ LOAD BALANCER ────────────→ BLUE (v1.0) ◄─ ATIVO       ││
│ │                                                         ││
│ │                              GREEN (v1.1) ◄─ INVESTIGAR││
│ │                                                         ││
│ │ • Rollback instantâneo: switch de volta para BLUE     ││
│ │ • Downtime mínimo                                      ││
│ │ • Investigar GREEN com calma                           ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ BENEFÍCIOS:                                                 │
│ • Rollback instantâneo                                    │
│ • Testar em ambiente de produção antes do tráfego        │
│ • Zero-downtime deployments                               │
└─────────────────────────────────────────────────────────────┘

Feature Flags

Gestão de Flags

ESTRATÉGIAS DE FEATURE FLAG:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ TIPOS DE FLAG:                                              │
│ ──────────────                                              │
│                                                             │
│ RELEASE FLAG:                                               │
│ Controla disponibilidade da feature                       │
│ • "Mostrar novo checkout"                                 │
│ • Vida curta (remover após rollout completo)              │
│                                                             │
│ EXPERIMENT FLAG:                                            │
│ Teste A/B                                                 │
│ • "Teste cor do botão checkout"                           │
│ • Medir impacto em métricas                               │
│                                                             │
│ OPERATIONAL FLAG:                                           │
│ Controla comportamento do sistema                         │
│ • "Habilitar cache"                                       │
│ • "Usar novo endpoint API"                                │
│                                                             │
│ KILL SWITCH:                                                │
│ Desabilitar emergência                                    │
│ • "Desabilitar processamento de pagamento"                │
│ • Permanente, para emergências                            │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ OPÇÕES DE TARGETING:                                        │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ FLAG: new-checkout                                     ││
│ │                                                         ││
│ │ REGRAS DE TARGETING:                                     ││
│ │                                                         ││
│ │ 1. Usuários internos (email @company.com) → ON        ││
│ │ 2. Usuários beta (opt-in)                 → ON        ││
│ │ 3. Usuários premium                       → 50% ON    ││
│ │ 4. Todos outros                           → 10% ON    ││
│ │                                                         ││
│ │ FALLBACK: OFF                                          ││
│ │                                                         ││
│ │ MÉTRICAS: checkout_completion_rate                     ││
│ │ OWNER: @product-team                                   ││
│ │ CRIADO: 15 Jan, 2025                                   ││
│ │ DATA REVISÃO: 15 Fev, 2025                             ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ CICLO DE VIDA DO FLAG:                                      │
│ ──────────────────────                                      │
│ Criar → Testar → Roll out → Limpar                        │
│                                                             │
│ ⚠️ Remover flags após rollout completo                     │
│ Flags antigos = dívida técnica                            │
└─────────────────────────────────────────────────────────────┘

Estratégias de Rollback

Quando Fazer Rollback

DECISÃO DE ROLLBACK:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ PRÉ-DEFINIR CRITÉRIOS:                                      │
│ ──────────────────────                                      │
│                                                             │
│ Definir ANTES do deployment, não durante incidente        │
│                                                             │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ RELEASE: v2.4.0                                        ││
│ │                                                         ││
│ │ GATILHOS DE ROLLBACK:                                    ││
│ │                                                         ││
│ │ ROLLBACK AUTOMÁTICO SE:                                  ││
│ │ • Taxa de erro > 1% (baseline: 0.1%)                  ││
│ │ • Latência p95 > 500ms (baseline: 200ms)              ││
│ │ • Respostas 5xx > 0.5%                                 ││
│ │                                                         ││
│ │ REVISÃO MANUAL SE:                                       ││
│ │ • Conversão cai > 5%                                   ││
│ │ • Padrões de tráfego incomuns                          ││
│ │ • Spike de reclamações de clientes                     ││
│ │                                                         ││
│ │ ACEITÁVEL (Sem ação):                                    ││
│ │ • Métricas dentro de 10% do baseline                   ││
│ │ • Mudanças de comportamento esperadas conhecidas       ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ PLAYBOOK DE ROLLBACK:                                       │
│ ─────────────────────                                       │
│                                                             │
│ 1. DETECTAR: Métrica excede threshold                     │
│ 2. ALERTAR: Notificação Pager/Slack                       │
│ 3. DECIDIR: Verificar não é falso positivo (1-2 min)     │
│ 4. EXECUTAR: Rodar rollback (automatizado preferido)      │
│ 5. VERIFICAR: Confirmar métricas recuperando              │
│ 6. COMUNICAR: Atualizar stakeholders                      │
│ 7. INVESTIGAR: Root cause (após estável)                  │
│                                                             │
│ REGRA: Rollback primeiro, investigar depois               │
│ Não debugar em produção durante outage                    │
└─────────────────────────────────────────────────────────────┘

Rastreamento de Releases

Rastreamento de Release

RASTREAMENTO DE RELEASE NO GITSCRUM:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ BOARD DE RELEASE:                                           │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ PLANEJADO │ DEPLOYING │ CANARY  │ ROLLING  │ COMPLETO  ││
│ │           │           │         │ OUT      │           ││
│ │ ┌─────┐   │           │ ┌─────┐ │          │ ┌─────┐   ││
│ │ │v2.5 │   │           │ │v2.4 │ │          │ │v2.3 │   ││
│ │ │Jan28│   │           │ │ 25% │ │          │ │Pronto│  ││
│ │ └─────┘   │           │ └─────┘ │          │ └─────┘   ││
│ │           │           │         │          │           ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ DETALHES DA RELEASE:                                        │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ RELEASE: v2.4.0                                        ││
│ │ STATUS: Canary (25%)                                   ││
│ │                                                         ││
│ │ PROGRESSO DO ROLLOUT:                                    ││
│ │ ████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░  25%          ││
│ │                                                         ││
│ │ MÉTRICAS:                                                ││
│ │ • Taxa erro: 0.08% (baseline: 0.1%) ✅                 ││
│ │ • Latência p95: 185ms (baseline: 200ms) ✅             ││
│ │ • Conversão: 4.2% (baseline: 4.1%) ✅                  ││
│ │                                                         ││
│ │ FEATURES INCLUÍDAS:                                      ││
│ │ • STORY-234: Novo fluxo de checkout                   ││
│ │ • STORY-245: Lógica de retry de pagamento             ││
│ │ • BUG-678: Fix cálculo do carrinho                    ││
│ │                                                         ││
│ │ TIMELINE:                                                ││
│ │ 10:00 - Deployed para canary (5%)                     ││
│ │ 10:30 - Métricas saudáveis, aumentado para 25%        ││
│ │ 12:00 - Revisão, planejar rollout 50%                 ││
│ │                                                         ││
│ │ OWNER: @jordan                                          ││
│ │ PRÓXIMO: Aumentar para 50% às 12:00 se saudável       ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘

Soluções Relacionadas