Deploy define a estratégia operacional e de entrega do projeto. É o documento que estabelece ondes os componentes rodam (hospedagem), em que condições (capacidade, variáveis, logs), como chegam lá (CI/CD, branches) e qual a rota de escape caso algo falhe (rollback).
Fase: 5 — Operação e Requisitos Reais
Pré-requisito: Docs/stack.md · Docs/architecture.md · Docs/structure.md · Docs/contract.yaml aprovados
Template: Templates/Full/deploy.md ou Templates/Quick/deploy.md
Artefato oficial: Docs/deploy.md
Próximo artefato: Docs/plan.md
Quando criar ou revisar
- Antes de modelar pipelines em
.github/workflows/ou scripts operacionais. - Quando um novo ambiente for provisionado (ex.: criação de
staging). - Em caso de mudança na nuvem ou modelo de hospedagem.
- Para definir estratégias de automação, hooks pre-commit e versionamento.
- Sempre que houver falha de deploy com necessidade de rever processo de rollback/contingência.
Full vs Quick
| Situação | Template |
|---|---|
| Projeto novo complexo com integração contínua (CI/CD), múltiplos ambientes e containers | Templates/Full/deploy.md |
| MVP front-end apenas ou API isolada sem automação de esteira | Templates/Quick/deploy.md |
| Necessidade de detalhar contingência, logs padronizados ou migrations de banco de dados | Revisar Full |
Estrutura — Deploy Full
O template Full tem 21 seções obrigatórias para formalizar toda a orquestração.
1. Identificação
Nome do projeto:
Versão do documento:
Status: [rascunho | revisando | aprovado]
Documentos base: Docs/stack.md, Docs/architecture.md, Docs/structure.md, Docs/contract.yaml
Data de criação:
Última atualização:2. Objetivo do Documento
Cobre: ambientes, hospedagem, infraestrutura, capacidade inicial, variáveis de ambiente, segredos, qualidade antes de merge, CI/CD, branches, versão, release, rollback, logs, e operação mínima.
Não cobre: arquitetura detalhada de módulos (que fica em architecture.md) e contratos de API (que fica em contract.yaml).
3. Estratégia Operacional do Projeto
Estratégia de hospedagem: [VPS | cloud provider | PaaS | serverless | híbrido]
Estratégia inicial: [ex.: integração automatizada e deploy semi-automático para prod]
Princípios operacionais:
- [ex.: previsibilidade e simplicidade]
- [ex.: baixo tempo de rollback]4. Ambientes
Todo projeto possui separação formal de ambientes de execução.
Local: Trabalho individual (execução local / variáveis locais / dependências simuladas)
Development: Validação contínua (integração inicial / testes internos)
Staging: Sandpit pré-release, idêntico a produção (validação de release / teste smoke)
Production: Santuário do real, blindado (estabilidade / controle de release)5. Hospedagem e Infraestrutura
Detalhar a plataforma e separar explicitamente o que é auto/gerenciado.
Plataforma de hospedagem principal: [Ex.: Hostinger VPS, Vercel, AWS]
Modelo de hospedagem: [ex.: Múltiplos contêineres Docker]
Topologia inicial: [descrever distribuição dos serviços]
Serviços gerenciados:
- [ex.: AWS RDS PostgreSQL]
Serviços autogerenciados:
- [ex.: Redis cache na própria VPS]6. Capacidade Inicial da Infra
Mapeamento mínimo das "capacidades" físicas ou tiers escolhidos:
Aplicação principal. CPU: [x] Memória: [x] Armazenamento: [x] Tráfego: [x] Concorrência: [x]
Banco de dados. CPU: [x] Memória: [x] Armazenamento: [x]
Serviços auxiliares (cache/fila/storage/CDN): [Definir se sim/não + tipo de plano]7. Variáveis de Ambiente e Segredos
Estratégia de configuração: [ex.: .env por ambiente injetado via pipeline]
Onde os segredos ficam armazenados: [ex.: GitHub Secrets e Vault, nunca localmente limpos]
Regras vitais:
1. Jamais faça log ou versionamento do arquivo contendo os segredos verdadeiros
2. Documentação não recebe tokens originais8. Qualidade Antes do Merge e do Deploy
O que trava o pull request e o commit ANTES de sujar o branch principal.
Ferramentas: husky, lint-staged, ESLint, TypeScript compiler
Regras (Pre-commit):
- lint sem erro
- formatação leve / checagens rápidas
Regras (Pre-push ou Pull Request check):
- typechecks
- testes obrigatórios passando
Critérios Bloqueantes: build quebrado ou reprovação em CI cancelam a aprovação9. Estratégia de Branches
Gestão das streams de desenvolvimento do time:
main: Fonte principal, blindada contra push direto.
staging / release: Canais conectados as esteiras automatizadas.
feature/[nome], task/[TASK-001]: Fluxo ativo dos desenvolvedores.
hotfix/[nome]: Rota expressa emergencial e rastreável.10. Estratégia de CI/CD
Plataforma: [ex.: GitHub Actions]
Etapas mínimas CI:
- Checkout, npm install, lint, test, build completo
Etapas mínimas CD:
- Auth no alvo, cópia artefatos, deploy (reload app/docker), validação saúde (smoke)
Gatilhos principais: Push nas branches centrais ou Pull Requests com alvo nestas branches.
Critérios de bloqueio de deploy: CI anterior falhou / Migração corrompeu.11. Versionamento e Release
Estratégia de versionamento: [ex.: semver simplificado v1.0.0]
Quando gerar tag: Na merge manual que representa um milestone do Docs/plan.md.
Notas de release (Changelog): [Sim, descritas dentro da Tag ou Pull Request]12. Logs e Observabilidade
Logs inúteis escondem incidentes. A seção deve normalizar:
Obrigatório em produção (JSON log ou padrão traceável).
Campos requeridos:
- timestamp, nível (info, warn, error)
- ambiente, serviço (frontend, daemon, api)
- reqId/correlationId
Conteúdo bloqueado para Logs: Senhas, Tokens JWT, payloads vazados brutos.13. Health Check, Readiness e Pós-Deploy
Smoke test (testes de fumaça) atestando que de fato subiu saudável.
Health check obrigatório: Sim (ex.: endpoint GET /api/health-check retornando 200)
Exigência final para pós-deploy manual ou automático:
- Aplicação deve subir portas lógicas
- Nenhuma falha severa pode nascer nos primeiros 5 minutos de tracking14. Banco, Migrações e Dados
Estratégia de Migrate: [ex.: ORM Prisma / Alembic, roda-se apenas etapa CD, ANTES da App em si]
Seed Inicial: [Descrever, ex: seed.ts injetado nos mocks]
Backups: [Qual servidor / Quem executa / Qual periodicidade]
Regra de ouro: Evitar migração destrutiva de banco (Drop Tables sem Drop Columns faseados)15. Rollback e Contingência
Sustentação crucial. O que fazer ao apertar o botão vermelho.
Estratégia de Rollback: [ex: Trigger GitHub Action "Revert Commit" ou Restore Container versão X]
Gatilho: App Offline por 2+ mins via Health Check pós build; quebra central no primeiro fluxo base de telas.
Plano B absoluto (contingência): [ex.: Restaurar droplet / DB backup diário 00h].16. Segurança Operacional
Acesso remoto restrito (SSH fechados, rede via IP bloqueada)
Princípio Mínimo de Permissões para chaves do IAM de Deploy (CD).
Logs monitorados constantemente de acesso.17. Responsabilidades Operacionais
Quem toca na chave da nuvem:
Quem pode fazer deploy: [Tech Lead e Automação GitHub]
Quem responde incidentes: [Plantão e Líder devOps]18. Relação com Outros Documentos
Docs/stack.md: A tecnologia exige a modelagem do runner/VPS na plataforma descrita neste doc.
Docs/architecture.md: O fluxo técnico dita quantos micro-apps e filas precisamos levantar de fato.
Docs/structure.md: Garante que os caminhos /tests /scripts batam com o job de Deploy (Seção 10).
Docs/contract.yaml: As APIs documentadas aqui garantem os endpoints validados pelo Health Check.19. Diretrizes de Implementação
Para DEVs e AI:
- NÃO se logue manualmente via SSH para executar `git pull` a não ser em desespero não mapeado; utilize pipeline escrito nesta DOC.
- Nenhuma automação será aceita se o rollback falhar a etapa conceitual.20. Síntese Operacional para Dev e AI
20.1 Hospedagem: [Resumo de 1 frase do cloud model]
20.2 Pipeline e Branches: [Resumo 1 frase]
20.3 Regras Críticas: Hooks prévios (Lint/Build obrigatório) evitam commits sujos.
20.4 Indefinições (temporário): [O que não sabemos de monitoria ainda e precisamos definir FASE 2]21. Aprovação
Status atual: [aprovado]
Data: [dd/mm/aaaa]Prompt para gerar com agente
Atue como SystemAgent.
Objetivo: criar Docs/deploy.md documentando a malha e regras de lançamento.
Carregue contexto base:
- Docs/stack.md
- Docs/architecture.md
- Docs/structure.md
- Templates/Full/deploy.md
Preencha rigorosamente as 21 seções do template Full.
Não re-junte passos nem comprima seções. Seja literal para que os DEV ops possam parametrizar o real pipeline de acordo com a Seção "10 e 15". Delimite um rollback crível baseado na Cloud do stack.md.
Atesse os gatilhos e Quality Gates corretos (Seções 8 e 13).Definição de pronto
O deploy.md está apto quando:
- Todas as 21 seções estipuladas no formato canônico da governança (Full) foram entregues individualizadas em texto claro e sem resumos vagos de "ambientes globais".
- Existem ferramentas formais declaradas em Pre-commit, Pre-push, e LintStages apontadas (Secções 8 a 10).
- As Regras Críticas de RollBack contingencial preenchem as necessidades de segurança corporativas mínimas (15).
- As definições e responsáveis refletem as políticas reais da equipe (17, 21).
Structure sem regras de "qualidade antes do merge" atreladas ao "pre-commit", e uma aba vazia ou superficial de "Rollback", constituem a maior fonte de incidente incontrolável nas Sextas-feiras: O time dá push, nada trava o código errado e ao subir para o cliente, ninguém estruturou via de escape ou restaurar o banco migrado pela metade.
Erros comuns
| Erro | Correção |
|---|---|
| Mesclar blocos da documentação resumindo etapas operacionais | Listar exatas 21 marcações. Sem quebras de estrutura de artefato Nébula oficial. |
| Inserir conteúdo sensível original do banco | Limite-se a registrar a "ferramenta Cofre" onde senhas estariam hospedadas em (Seção 7). |
Esquecer de atrelamar o script Run/seed no pós build Database inicial | Declarar claramente em "Banco e Migrações" o estagio dos comandos ORM pré server online. |
| Negligenciar formatação do Log Estático | Especificar o Trace. Exemplo: {time, type, context, level} visando simplificar greps nos terminais provedores (Seção 12). |