DEV Community

Pedro Almeida
Pedro Almeida

Posted on

Como construí uma plataforma de deploy com pipeline automatizado, Docker isolado, websockets e logs em tempo real

Há alguns meses, pagando $7/mês por um servidor de 512MB no Render
pra hospedar uma API de um projeto da escola, decidi entender como
esse tipo de infraestrutura funciona por baixo — e construir a
minha própria versão.

O resultado é o Arctis Deploy: uma plataforma de deploy
contínuo via Git, com Docker isolado por projeto. Esse post é
sobre como ela funciona por dentro.

Arquitetura geral

Frontend (Next.js)

Backend (Go + Fiber) — Clean Architecture

├──► Deploy-Agent (roda em cada servidor) → Docker

└──► Database-Agent (provisiona MySQL/Postgres)

  • em desenvolvimento, ainda não disponível para usuários

Cada servidor de produção roda um deploy-agent próprio. O
backend central envia comandos via HTTPs autenticado e o agent
executa o que for necessário — clone, build, container, métricas.

O pipeline de deploy

Todo deploy passa por 5 etapas sequenciais:

  1. clonegit clone --depth 1, otimizado pra trazer só o necessário
  2. analyze — detecta o framework automaticamente lendo package.json, requirements.txt, go.mod, etc.
  3. build — gera um Dockerfile multi-stage específico pro framework detectado (timeout: 15min)
  4. deploy — sobe o container na porta alocada, com limites de CPU/RAM aplicados
  5. health check — faz requisições até o container responder, com rollback automático em caso de falha

Cada etapa emite logs estruturados (info/warn/error),
transmitidos via WebSocket em tempo real pro frontend.

Detecção automática de framework

Next.js, React, Vue, Node.js, e sites estáticos.
A detecção é baseada nos arquivos do repositório — o usuário só
conecta o Git e dá push.

Outros detalhes

  • Pool de recursos: cada plano define um total de Projetos/CPU/RAM/disco que o usuário distribui livremente entre seus projetos
  • Auto-sleep: no free, containers sem tráfego são pausados (docker pause) — não destruídos — e despertam automaticamente na próxima requisição
  • Domínios: subdomínio automático ou domínio próprio, com SSL via Cloudflare
  • Pagamentos: MercadoPago integrado, planos em real

Validação inicial

Postei essa história no Tabnews e, em poucos dias, tive mais de
250 pageviews e 65+ visitantes únicos, boa parte chegando até a
documentação e o dashboard. Ainda early stage, mas validou que a
dor — preço em dólar, pouco recurso — é real pra outros devs também.

Testar

A plataforma está em beta público: https://launch.arctisdev.com

Plano free: 2 vCPUs, 2GB RAM, 4GB disco — sem cartão.

Se quiser trocar ideia sobre a arquitetura, decisões técnicas ou
tiver sugestões, comenta aqui ou entra no Discord.

Top comments (0)