Pular para o conteúdo

Deploy e Infraestrutura

Implementador

O Prodgy utiliza containers Docker para a maioria dos serviços, com exceção do Assistant (.NET) que roda em uma VM Windows.

ServiçoMétodo de DeployPlataforma Recomendada
APIContainerAzure Container Apps, ECS, Kubernetes
WebContainer ou StaticAzure Static Web Apps, S3 + CloudFront, Vercel
ServiceContainerAzure Container Apps, ECS, Kubernetes
StudioContainerAzure Container Apps, ECS, Kubernetes
EngineContainerAzure Container Apps, ECS, Kubernetes
GatewayContainerAzure Container Apps, ECS, Kubernetes
AgenticContainerAzure Container Apps, ECS, Kubernetes
AssistantVM WindowsAzure VM, EC2 Windows, bare metal
DocsContainer ou StaticAzure Static Web Apps, Vercel, Netlify

Cada serviço possui seu próprio Dockerfile:

ServiçoArquivoImagem Base
APIapps/api/Dockerfilenode:18-alpine
Webapps/web/Dockerfilenode:18-alpine
Serviceapps/service/Dockerfilenode:18-alpine
Studioapps/studio/Dockerfilenode:18-alpine
Gatewayapps/gateway/Dockerfilenode:18-alpine
Agenticapps/agentic/Dockerfilenode:18-alpine
EngineDockerfile.engine (raiz)python:3.13-slim
# API
docker build -f apps/api/Dockerfile -t prodgy-api .

# Web
docker build -f apps/web/Dockerfile -t prodgy-web .

# Service
docker build -f apps/service/Dockerfile -t prodgy-service .

# Studio
docker build -f apps/studio/Dockerfile -t prodgy-studio .

# Gateway
docker build -f apps/gateway/Dockerfile -t prodgy-gateway .

# Agentic
docker build -f apps/agentic/Dockerfile -t prodgy-agentic .

# Engine
docker build -f Dockerfile.engine -t prodgy-engine .

O docker-compose.yml na raiz do projeto configura os serviços auxiliares para desenvolvimento local:

docker compose up -d

Serviços inclusos:

  • Redis (porta 6379) — broker de filas e cache
  • Redis Commander (porta 8081) — interface web para monitoramento
  • Engine (porta 8001) — motor de IA

O Prodgy utiliza Azure DevOps Pipelines com detecção automática de mudanças:

AmbienteTriggerBranch
DevelopmentPush automáticomain
StagingPush automáticostaging
ProductionTag v*Git tags

O pipeline verifica quais serviços foram alterados e faz build/deploy apenas dos afetados:

Mudança emServiços Afetados
apps/api/Apenas API
apps/web/Apenas Web
apps/service/Apenas Service
apps/studio/Apenas Studio
apps/gateway/Apenas Gateway
apps/agentic/Apenas Agentic
apps/engine/ ou Dockerfile.engineApenas Engine
apps/assistant/Apenas Assistant
packages/, pnpm-lock.yaml, turbo.jsonTodos os serviços Node.js

Cada ambiente requer um Variable Group no Azure DevOps com:

azureServiceConnection         # Conexão Azure RM
resourceGroup                  # Resource Group
containerRegistry              # Nome do Container Registry
registryLoginServer            # URL do Registry
apiContainerAppName            # Container App da API
serviceContainerAppName        # Container App do Service
webContainerAppName            # Container App do Web
studioContainerAppName         # Container App do Studio
gatewayContainerAppName        # Container App do Gateway
agenticContainerAppName        # Container App do Agentic
engineContainerAppName         # Container App do Engine
AZURE_STATIC_WEB_APP_API_TOKEN # Token do Static Web App
VM_IP                          # IP da VM Windows (Assistant)
VM_USER                        # Usuário da VM
VM_PASSWORD                    # Senha da VM (segredo)

O serviço Assistant requer deploy especial em VM Windows:

  1. O pipeline compila o projeto .NET
  2. Gera um artefato compactado
  3. Conecta na VM via WinRM (PowerShell remoting)
  4. Para o serviço via NSSM
  5. Substitui os arquivos (preservando appsettings.Production.json)
  6. Reinicia o serviço

  • Variáveis de ambiente configuradas para o ambiente alvo
  • Tokens de serviço gerados (únicos por ambiente)
  • Banco de dados PostgreSQL/Supabase provisionado
  • Redis provisionado e acessível
  • DNS configurado para serviços públicos
  • Certificados SSL emitidos
  • CORS configurado na API com as origens corretas
  • Health check dos serviços (API, Engine, Service, Gateway, Agentic)
  • Teste de autenticação (login, JWT, API tokens)
  • Teste de comunicação entre serviços
  • Verificar conexão com banco de dados
  • Verificar conexão com Redis
  • Testar Playground (envio de mensagem a um agente)
  • Verificar logs de cada serviço