Cover do episódio 86: O checklist que eu usava antes de ir pra produção em 2019
#08624 de junho, 20192 min leituraBastidores do CódigoS3 · 2018–2019

O checklist que eu usava antes de ir pra produção em 2019

Sem CI/CD automatizado, o que impedia o deploy de quebrar tudo era disciplina manual. Esse era o checklist que eu executava antes de cada deploy.

DeployProcessoQualidadeDevOps

Em 2019 não tinha CI/CD. Deploy era manual. Abria o terminal, SSH no servidor, puxava o código, reiniciava o processo.

Quebrei produção umas três vezes em seis meses. Depois virei obcecado com checklist.


O checklist antes do deploy:

  • [ ] Testes rodando localmente e passando
  • [ ] Variáveis de ambiente novas documentadas e configuradas no servidor
  • [ ] Migration de banco testada localmente com rollback verificado
  • [ ] Feature flag ativada ou desativada conforme o plano
  • [ ] Endpoint novo documentado (mesmo que só internamente)
  • [ ] Log de mudança escrito no PR

Parece simples. Cada item dessa lista existe porque eu quebrei produção uma vez sem checar aquela coisa.


Três quebras que geraram cada item:

Variável de ambiente não configurada no servidor: código novo precisava de PAYMENT_API_KEY. Rodava local porque tinha no .env. No servidor: undefined. Sistema de pagamento parava silenciosamente. Cliente descobria tentando pagar.

Migration sem rollback: adicionei coluna NOT NULL sem default. Migration rodava, coluna criada. Na hora de reverter, o rollback explodia porque tinha dado INSERT sem a coluna nova. Dados inconsistentes. Rollback manual de 2 horas.

Restart sem checar se subiu: reiniciava o processo e saía do SSH. Às vezes o processo não subia — erro de sintaxe, dependência faltando. A próxima requisição chegava, sem processo, 502. Aprendi a sempre checar systemctl status depois do restart.


O que não estava no checklist mas deveria: backup antes de migration (e testar restore — backup que você não testou é quase backup), rollback plan ("o que faço se der errado?" é pergunta que você precisa conseguir responder antes de clicar enter), e horário de menor tráfego (deployar às 14h numa sexta em e-commerce é má ideia — aprendi isso sem precisar quebrar, vi colega aprender).

Com CI/CD, esse checklist manual virou artefato histórico. Mas o exercício de criar foi valioso: te força a explicitar o que pode dar errado. CI/CD não elimina checklist — automatiza a parte repetível e deixa você focar no que é decisão humana.

Essa semana: se você faz deploy manual, escreve seu checklist. Não precisa ter 50 itens. Começa com os 5 que, se você esquecer, quebra produção.