Especificação — serviço de deploy multiservidor

Estado implementado (2026-07-20): deploy-agent/ entrega POST /v1/deploy async (202) + GET /v1/deploy/{id}, pipeline syncrecreatestabilizeverify, lock, auditoria. CI DEV usa gate #publish + poll. Ambientes: dev e qas. HMAC/TLS no agent e publish em feature/*/feat/ = MVP2 / evolução.

Doc operacional do pacote: deploy-agent/docs/README.md · Guia: guia-atualizacao-servidor.md.


Este documento define um processo completo, seguro e replicavel para automatizar deploy em servidores de teste (DEV/QAS), usando um microservico Python de deploy acionado por pipeline CI/CD.

Objetivo principal: eliminar operacao manual de git pull, rebuild e restart, com padrao unico para varios servidores.


1) Escopo e Objetivos

Objetivos

Fora de escopo (neste primeiro ciclo)


2) Arquitetura de Referencia

Componentes

Fluxo de alto nivel

  1. push em develop (ou branch de ambiente).
  2. CI valida build e publica imagens.
  3. CI chama endpoint do Deploy Agent no(s) servidor(es) de teste.
  4. Agent valida autenticacao/autorizacao.
  5. Agent executa pipeline local: - atualizar git/submodulos; - atualizar servico alvo (ou todos); - reiniciar servico(s); - validar health; - registrar auditoria.
  6. Agent retorna status detalhado para o CI.

3) Contrato da API de Deploy

Endpoint principal

Request body

{
  "user": "nome-ou-sistema",
  "key": "token-ou-assinatura",
  "service": "ecosif-auth",
  "branch": "develop",
  "environment": "dev"  // ou "qas",
  "request_id": "uuid-opcional"
}

Regras de negocio

Response

{
  "request_id": "4b4b7b6e-....",
  "status": "success",
  "server": "dev-01",
  "branch": "develop",
  "service": "ecosif-auth",
  "steps": [
    {"name":"git_update","status":"ok","duration_ms":4212},
    {"name":"service_update","status":"ok","duration_ms":80125},
    {"name":"restart","status":"ok","duration_ms":15000},
    {"name":"healthcheck","status":"ok","duration_ms":3200}
  ],
  "started_at": "2026-05-05T12:00:00Z",
  "finished_at": "2026-05-05T12:01:45Z"
}

Codigos HTTP sugeridos


4) Seguranca (Obrigatorio para "sem dor")

Controles minimos

Recomendacao de autenticacao


5) Implementacao do Deploy Agent (Python)

Stack recomendada (leve)

Estrutura minima de codigo

Comandos base (usando scripts existentes)

Importante: para automacao sem interacao, o update.sh deve suportar flag --yes (nao perguntar confirmacao).


6) Processo Operacional (Passo a Passo)

Processo de deploy por requisicao

  1. Receber request e validar schema.
  2. Autenticar user e key.
  3. Validar service na allowlist (se informado).
  4. Adquirir lock global de deploy.
  5. Registrar auditoria started.
  6. Executar: - etapa A: atualizar git/submodulos; - etapa B: atualizar servico(s); - etapa C: reiniciar servico(s); - etapa D: validar healthchecks.
  7. Registrar auditoria finished com resultado.
  8. Liberar lock.
  9. Retornar resultado detalhado.

Healthcheck minimo


7) Topologia Multiservidor

Padrao de replicacao

Modelos de disparo

Estrategia de rollout


8) Integracao CI/CD

Gatilho recomendado

Exemplo de chamada no CI (conceitual)

curl -X POST "https://deploy.dev-01.interno/v1/deploy" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: ${DEPLOY_API_KEY}" \
  -d '{
    "user": "github-actions",
    "service": "",
    "branch": "develop",
    "environment": "dev"  // ou "qas"
  }'

Segredos no CI


9) Observabilidade e Auditoria

Logs estruturados (JSON)

Campos obrigatorios:

Monitoracao minima


10) Rollback e Recuperacao

Rollback tecnico imediato

Quando healthcheck falhar apos deploy:

  1. Registrar falha.
  2. Tentar reiniciar stack uma vez.
  3. Se falhar novamente: - voltar para tag anterior de imagens (ou commit anterior); - docker compose up -d; - validar healthchecks.
  4. Emitir alerta.

Politica


11) Requisitos de Infra

Servidor

Rede


12) Plano de Implantacao em Fases

Fase 0 - Preparacao (1 dia)

Fase 1 - Piloto em 1 servidor DEV (1-2 dias)

Fase 2 - Expansao para varios DEV (1-2 dias)

Fase 3 - Harden e padronizacao (2-4 dias)


13) Criterios de Pronto para Uso ("sem dor")

Para considerar o servico pronto:


14) Riscos e Mitigacoes


15) Decisoes Recomendadas para o Projeto ECOSIF


16) Checklist de Execucao (Resumo)

Status implementação DEV (deploy-agent/ + workflow hub): concluído no código.
Itens de rede/TLS e rollback em servidor específico: revalidar por ambiente.


Status deste documento: especificacao implementada de forma faseada em DEV; promover com cautela a QAS/prod.