8 min leitura • Guide 806 of 877
Gestão de Ambientes
Ambientes consistentes evitam surpresas. O GitScrum ajuda a rastrear quais recursos estão implantados onde e coordenar promoções de ambiente.
Estratégia de Ambiente
Tipos de Ambiente
VISÃO GERAL DO AMBIENTE:
┌─────────────────────────────────────────────────────────────┐
│ │
│ DESENVOLVIMENTO (DEV): │
│ ───────────────────── │
│ • Desenvolvimento ativo de recursos │
│ • Implantações frequentes (múltiplas/dia) │
│ • Pode estar instável │
│ • Desenvolvedores têm acesso total │
│ • Dados de exemplo/teste │
│ │
│ STAGING: │
│ ──────── │
│ • Ambiente semelhante à produção │
│ • Teste pré-produção │
│ • Mesma configuração da produção │
│ • Dados realistas (mas não reais) │
│ • Implantar antes da produção │
│ │
│ PRODUÇÃO (PROD): │
│ ───────────────── │
│ • Tráfego de usuários ao vivo │
│ • Requisitos de maior estabilidade │
│ • Acesso restrito │
│ • Dados reais │
│ • Monitoramento e alertas │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ FLUXO DE PROMOÇÃO: │
│ │
│ DEV ──────→ STAGING ──────→ PRODUÇÃO │
│ │ │ │ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ Testes unit Testes de Testes de │
│ Testes dev integração fumaça │
│ Aprovação de │
│ stakeholders │
└─────────────────────────────────────────────────────────────┘
Ambientes Estendidos
AMBIENTES ADICIONAIS:
┌─────────────────────────────────────────────────────────────┐
│ │
│ AMBIENTES OPCIONAIS: │
│ │
│ LOCAL: │
│ Máquina do desenvolvedor │
│ Iteração rápida │
│ Pode não corresponder exatamente à produção │
│ │
│ QA: │
│ Teste QA dedicado │
│ Estável para execução de testes │
│ Gerenciamento de dados de teste │
│ │
│ UAT (Teste de Aceitação do Usuário): │
│ Teste de stakeholder/cliente │
│ Validação de negócio │
│ Aprovação antes da produção │
│ │
│ PERFORMANCE/CARGA: │
│ Teste de performance │
│ Infraestrutura escalada │
│ Simulação de carga realista │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ MATRIZ DE AMBIENTE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ AMB PROPÓSITO DADOS ACESSO ││
│ │ ─── ───────── ───── ────── ││
│ │ Local Desenvolvimento Mock/Amostra Desenvolvedor ││
│ │ Dev Integração Dados teste Equipe ││
│ │ QA Teste Dados teste QA + Equipe ││
│ │ UAT Aceitação Sanitizados Stakeholders ││
│ │ Staging Pré-prod Realistas Limitado ││
│ │ Prod Ao vivo Reais Muito limitado ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ MAIS AMBIENTES = Mais sobrecarga │
│ Equilíbrio: Suficiente para processo, não muitos para gerenciar │
└─────────────────────────────────────────────────────────────┘
Paridade de Ambiente
Mantendo Ambientes Consistentes
PARIDADE DE AMBIENTE:
┌─────────────────────────────────────────────────────────────┐
│ │
│ O PROBLEMA: │
│ ─────────── │
│ "Funciona no staging, quebra na produção" │
│ │
│ CAUSAS: │
│ • Versões diferentes de SO │
│ • Versões diferentes de dependências │
│ • Configuração diferente │
│ • Características de dados diferentes │
│ • Configuração de rede diferente │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ SOLUÇÕES: │
│ │
│ CONTAINERIZAÇÃO: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Mesma imagem Docker em todos os ambientes ││
│ │ ││
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ││
│ │ │ DEV │ │ STAGING │ │ PROD │ ││
│ │ │ │ │ │ │ │ ││
│ │ │ imagem: │ │ imagem: │ │ imagem: │ ││
│ │ │ v1.2.3 │ │ v1.2.3 │ │ v1.2.3 │ ││
│ │ │ │ │ │ │ │ ││
│ │ └──────────┘ └──────────┘ └──────────┘ ││
│ │ ↑ ↑ ↑ ││
│ │ └──────────────┴──────────────┘ ││
│ │ Mesma imagem, mesmo comportamento ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ INFRAESTRUTURA COMO CÓDIGO: │
│ • Terraform, Pulumi para infraestrutura │
│ • Manifestos Kubernetes para implantação │
│ • Ansible para configuração │
│ • Controlado por versão, revisável │
│ │
│ GERENCIAMENTO DE CONFIGURAÇÃO: │
│ • Variáveis de ambiente para diferenças │
│ • Gerenciamento de segredos (Vault, AWS Secrets) │
│ • Feature flags para comportamento │
└─────────────────────────────────────────────────────────────┘
Rastreamento de Implantação
Visibilidade
RASTREAMENTO DE STATUS DO AMBIENTE:
┌─────────────────────────────────────────────────────────────┐
│ │
│ DASHBOARD DE IMPLANTAÇÃO: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ STATUS DO AMBIENTE ││
│ │ ││
│ │ AMB VERSÃO IMPLANTADO STATUS RECURSOS ││
│ │ ─── ─────── ────────── ────── ──────── ││
│ │ Dev v2.4.1 10 min atrás 🟢 15 novos ││
│ │ QA v2.4.0 2 horas atrás 🟢 12 novos ││
│ │ Staging v2.4.0 1 dia atrás 🟢 12 novos ││
│ │ Prod v2.3.0 1 semana atrás 🟢 baseline ││
│ │ ││
│ │ ─────────────────────────────────────────────────────── ││
│ │ ││
│ │ PROMOÇÕES PENDENTES: ││
│ │ • v2.4.0: Staging → Prod (agendado: 27 Jan) ││
│ │ • v2.4.1: QA → Staging (aguardando aprovação QA) ││
│ │ ││
│ │ IMPLANTAÇÕES RECENTES: ││
│ │ • v2.4.1 → Dev por @alex (10 min atrás) ││
│ │ • v2.4.0 → Staging por @jordan (1 dia atrás) ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ O QUE ESTÁ ONDE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ STORY-456: Novo fluxo de checkout ││
│ │ ││
│ │ Dev: ✅ Implantado (v2.4.1) ││
│ │ QA: ✅ Implantado (v2.4.0) ││
│ │ Staging: ✅ Implantado (v2.4.0) ││
│ │ Prod: ⏳ Pendente (em v2.4.0, agendado 27 Jan) ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
Processo de Promoção
Portões de Ambiente
WORKFLOW DE PROMOÇÃO:
┌─────────────────────────────────────────────────────────────┐
│ │
│ DEV → QA PROMOÇÃO: │
│ ────────────────── │
│ ☐ Todos os testes unitários passando │
│ ☐ Revisão de código aprovada │
│ ☐ Build bem-sucedido │
│ ☐ Recurso completo para teste │
│ │
│ QA → STAGING PROMOÇÃO: │
│ ───────────────────── │
│ ☐ Teste QA completo │
│ ☐ Sem bugs críticos │
│ ☐ Testes de regressão passando │
│ ☐ Aprovação QA │
│ │
│ STAGING → PRODUÇÃO: │
│ ─────────────────── │
│ ☐ Verificação staging completa │
│ ☐ Aprovação stakeholder (se necessário) │
│ ☐ Notas de release preparadas │
│ ☐ Plano de rollback pronto │
│ ☐ Janela de implantação confirmada │
│ ☐ Equipe de plantão notificada │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ TAREFA DE PROMOÇÃO: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ RELEASE-024: Promover v2.4.0 para Produção ││
│ │ ││
│ │ VERSÃO: v2.4.0 ││
│ │ ATUAL: Staging ││
│ │ ALVO: Produção ││
│ │ AGENDADO: 27 Jan, 14h UTC ││
│ │ ││
│ │ CHECKLIST: ││
│ │ ☑ Testes staging passaram ││
│ │ ☑ Notas de release publicadas ││
│ │ ☑ Plano de rollback documentado ││
│ │ ☐ Implantar na produção ││
│ │ ☐ Testes de fumaça ││
│ │ ☐ Monitorar por 1 hora ││
│ │ ☐ Marcar release como completo ││
│ │ ││
│ │ RESPONSÁVEL: @jordan ││
│ │ APROVADORES: @tech-lead, @product-owner ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
Solução de Problemas de Ambiente
Problemas Comuns
PROBLEMAS DE AMBIENTE:
┌─────────────────────────────────────────────────────────────┐
│ │
│ PROBLEMA: "Funciona localmente, falha no dev" │
│ ───────────────────────────────────────────── │
│ CAUSAS: │
│ • Variáveis de ambiente ausentes │
│ • Versões diferentes de dependências │
│ • Serviços apenas locais não disponíveis │
│ │
│ CORREÇÃO: │
│ • Usar Docker para desenvolvimento local │
│ • Documentar todas as variáveis de ambiente │
│ • Bloquear versões de dependências │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ PROBLEMA: "Staging passou, produção falhou" │
│ ─────────────────────────────────────────── │
│ CAUSAS: │
│ • Diferenças de volume de dados │
│ • Comportamento de serviço terceiro │
│ • Deriva de configuração │
│ │
│ CORREÇÃO: │
│ • Espelhar tráfego de produção para staging │
│ • Infraestrutura como código (sem mudanças manuais) │
│ • Auditorias regulares de ambiente │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ PROBLEMA: "Ambiente está lento/quebrado" │
│ ───────────────────────────────────────── │
│ CAUSAS: │
│ • Esgotamento de recursos │
│ • Implantação ruim │
│ • Corrupção de dados │
│ │
│ CORREÇÃO: │
│ • Monitoramento e alertas │
│ • Procedimentos de refresh de ambiente │
│ • Restauração rápida de estado bom conhecido │
└─────────────────────────────────────────────────────────────┘