Fase 04 — Operação de Produto
CI/CD pipeline, GMUD, deployment strategy, SLOs e DORA metrics.
CI/CD Pipeline — GitHub Actions
Pipeline com 6 jobs definido em .github/workflows/ci.yml. Adaptado para a stack real: npm (não pnpm), Fastify 5.0 (não tRPC/Next.js), SQLite3 in-memory para testes (não Supabase/PostgreSQL), Vitest (não Playwright).
Executa linting e verificação de tipos TypeScript em server e web.
lint— ESLint com regras padrãotypecheck server— tsc --noEmit no diretório server/typecheck web— tsc --noEmit no diretório web/
Executa testes unitários via Vitest com SQLite3 in-memory.
server tests (Vitest)— 4 test files, 29 test cases cobrindo auth, pix, accounts, paymentsweb tests (Vitest)— testes de componentes React
Build de produção do frontend React.
vite build— gera web/dist/ com arquivos estáticos otimizados (code splitting, tree shaking, minificação)
Verifica aprovação da GMUD antes de permitir deploy em produção.
verify GMUD approval— checa se a GMUD correspondente está com status "Aprovada"
Deploy efetivo em produção.
install— npm ci com dependências de produçãobuild— compilação do servidor TypeScriptdeploy server— upload e restart do processo Node.js via PM2deploy web— upload dos arquivos estáticos (web/dist/)migrations— execução de migrations do banco SQLite3smoke test— verificação de health check pós-deploy
Gate final que verifica se todos os jobs anteriores passaram. Se qualquer job falhar, a pipeline é marcada como falhada.
GMUD-001 — Release Inicial
| Tipo | Normal |
| Status | Aprovada |
| Risco | Baixo (6/30) |
| Execução Planejada | 2026-03-05 10:00 BRT |
| Duração Estimada | 45 minutos |
| Componentes | Fastify API, React SPA, SQLite3, GitHub Actions, Environment variables |
| Rollback | SQLite backup + PM2 stop + static file replacement |
Estratégia de Deployment
Processo Node.js gerenciado por PM2 em VPS/VM ou plataforma como Railway, Render ou Fly.io.
- PM2 gerencia restart automático, logs e clustering
- SQLite3 como arquivo local no mesmo servidor
- Backup do banco antes de cada deploy
- Rollback: PM2 rollback + restore do arquivo SQLite
Arquivos estáticos (web/dist/) servidos via Vercel, Netlify, Cloudflare Pages ou pelo próprio Fastify.
- Build gera HTML/CSS/JS otimizados
- CDN para distribuição global
- Cache headers para assets imutáveis
- Fallback para SPA (index.html para todas as rotas)
Variáveis de Ambiente — Produção
| Variável | Propósito | Obrigatória |
|---|---|---|
JWT_SECRET | Chave secreta para assinatura de tokens JWT — NUNCA usar valor padrão | Sim |
DATABASE_PATH | Caminho para o arquivo SQLite em produção | Sim |
PORT | Porta da API (default: 3333) | Sim |
NODE_ENV | production | Sim |
VITE_API_URL | URL da API em produção para build do frontend | Sim (build) |
VERCEL_TOKEN | Deploy automático do frontend (se usar Vercel) | Opcional |
Service Level Objectives (SLOs)
DORA Metrics — Targets (Elite Tier)
| Métrica | Target | Como Medir |
|---|---|---|
| Deployment Frequency | On-demand (múltiplos por dia) | Contagem de deploys em produção por dia/semana via GitHub Actions runs com status success na branch main. |
| Lead Time for Changes | < 1 hora | Tempo entre merge do PR na main e deploy completo em produção. Medido via timestamps do GitHub Actions. |
| Change Failure Rate | < 5% | Percentual de deploys que resultam em degradação de serviço, rollback ou hotfix. Medido via GMUD registry. |
| Time to Restore Service (MTTR) | < 1 hora | Tempo entre detecção de incidente e restauração do serviço. Medido via incident log com timestamps. |
Links Úteis
HITL da Fase 04
| HITL | Escopo | Agente | Decisão |
|---|---|---|---|
| #11 | Infraestrutura operacional (CI/CD pipeline, GMUD-001, guia de instalação, SLOs) | Operations | Aprovado |