arcadiasuite/docs/KERNEL_GAP_ANALYSIS.md

6.8 KiB

Análise de Gap - Arcadia Kernel

Data: 09/04/2026
Objetivo: Comparar funcionalidades implementadas vs. sugeridas


🔴 Root Cause Analysis: Learning Service Timeouts (RESOLVIDO)

Problema: PYTHON_SERVICE_URL sendo resetado para porta 8001 em vez de 8000

Causa Raiz Identificada: O arquivo .env.example na linha 30 continha:

PYTHON_SERVICE_URL=http://localhost:8001  # ← ERRADO

Quando o Coolify recriava o container, ele usava o valor do .env.example como fallback, causando:

  • Timeouts de 10s a cada 60s (ciclo do Learning Service)
  • Degradação de performance do sistema
  • Erros silenciosos no log

Solução Aplicada (08/04/2026): Corrigido .env.example para usar porta 8000 com comentário explicativo.

Lição Aprendida: O .env.example deve sempre estar sincronizado com a configuração de produção correta.


📊 Resumo das Funcionalidades

Funcionalidade Status Implementação Notas
Service Discovery Parcial ServiceRegistry + 4 providers Docker, Coolify, XOS, Static
Load Balancer Não tem - Não implementado
Circuit Breaker Não tem - Não implementado
Config Hot Reload Não tem - Requer restart do Kernel
Resource Limits ⚠️ Parcial Via ProcessManager Limites básicos de processo
Secrets Management Não tem - Variáveis em .env

O que Temos Implementado

1. Service Discovery (Parcial )

Arquivos:

  • server/kernel/registry/ServiceRegistry.ts
  • server/kernel/discovery/*

Providers Implementados:

  • DockerDiscovery - Descobre containers Docker
  • CoolifyDiscovery - Integração com Coolify
  • XOSDiscovery - Descobre serviços XOS
  • StaticDiscovery - Configuração estática

Funcionalidades:

  • Discovery automático (30s intervalo)
  • Health checks (15s intervalo)
  • Cleanup de serviços stale (5min)
  • EventEmitter para mudanças
  • Falta: Service mesh, load balancing entre instâncias

2. Health Monitor

Arquivo: server/kernel/core/HealthMonitor.ts

Funcionalidades:

  • Health checks HTTP periódicos
  • Configurável (interval, timeout, retries)
  • Eventos onHealthChange
  • Tracking de falhas/sucessos consecutivos

3. Process Manager

Arquivo: server/kernel/core/ProcessManager.ts

Funcionalidades:

  • Gerenciamento de processos filhos
  • Logs aggregator
  • State tracking
  • ⚠️ Básico: Resource limits ( apenas via SO)

4. Log Aggregator

Arquivo: server/kernel/core/LogAggregator.ts

Funcionalidades:

  • Centralização de logs
  • Limite de linhas (configurável)
  • Query/filter básico

5. Dashboard Web

Arquivo: server/kernel/dashboard/DashboardServer.ts

Funcionalidades:

  • Interface web (porta 5001)
  • WebSocket para tempo real
  • Visualização de serviços

O que Falta Implementar

1. Load Balancer

Prioridade: Alta
Descrição: Distribuir carga entre instâncias de serviços

Casos de Uso:

  • Múltiplas instâncias do mesmo serviço
  • Failover automático
  • Distribuição por região

Implementação Sugerida:

// server/kernel/balancer/LoadBalancer.ts
interface LoadBalancer {
  selectInstance(serviceId: string): RegisteredService;
  registerStrategy(strategy: BalanceStrategy): void;
}

2. Circuit Breaker

Prioridade: Alta
Descrição: Parar de chamar serviço falho após N falhas

Estados:

  • CLOSED: Funcionando normal
  • OPEN: Circuito aberto (rejeita chamadas)
  • HALF_OPEN: Testando se voltou

Implementação Sugerida:

// server/kernel/circuit/CircuitBreaker.ts
interface CircuitBreaker {
  call<T>(fn: () => Promise<T>): Promise<T>;
  getState(): 'CLOSED' | 'OPEN' | 'HALF_OPEN';
}

3. Config Hot Reload

Prioridade: Média
Descrição: Mudar configuração sem restartar Kernel

Funcionalidades:

  • Watch de arquivo services.json
  • Aplicar mudanças em runtime
  • Notificar serviços afetados

Implementação Sugerida:

// server/kernel/config/ConfigWatcher.ts
interface ConfigWatcher {
  watch(path: string, onChange: (config: Config) => void): void;
}

4. Resource Limits (Melhorar) ⚠️

Prioridade: Média
Status: Básico via SO (ulimit)

O que falta:

  • Limite de CPU por serviço (cgroups)
  • Limite de memória por serviço
  • Throttling de requisições
  • Quotas por tenant

5. Secrets Management

Prioridade: Alta
Status: Variáveis em .env (inseguro)

Funcionalidades Necessárias:

  • Vault integrado (HashiCorp Vault style)
  • Encryption at rest
  • Rotacionamento automático
  • Acesso por política (RBAC)
  • Audit logging

Implementação Sugerida:

// server/kernel/secrets/SecretVault.ts
interface SecretVault {
  get(key: string): Promise<string>;
  set(key: string, value: string): Promise<void>;
  rotate(key: string): Promise<void>;
}

📋 Recomendações de Prioridade

Fase 1 - Crítico (Segurança + Estabilidade)

  1. Secrets Management - Dados sensíveis expostos em .env
  2. Circuit Breaker - Evitar cascata de falhas

Fase 2 - Performance

  1. Load Balancer - Necessário para escalar
  2. Resource Limits - Prevenir resource exhaustion

Fase 3 - DX (Developer Experience)

  1. Config Hot Reload - Evitar restart em produção

🔧 Notas Técnicas

Service Discovery Atual

ServiceRegistry
├── DockerDiscovery (containers)
├── CoolifyDiscovery (apps Coolify)
├── XOSDiscovery (serviços XOS)
└── StaticDiscovery (config manual)

Limitação: Não faz load balancing entre múltiplas instâncias do mesmo serviço.

Health Check Atual

  • Interval: 15s
  • Timeout: 5s
  • Retries: 3
  • Falta: Circuit breaker baseado em health

Process Manager Atual

  • Gerencia processos via Node.js spawn
  • Falta: Isolamento real (containers), resource limits

📁 Arquivos Relacionados

Componente Arquivo
Entry Point server/kernel/index.ts
Service Registry server/kernel/registry/ServiceRegistry.ts
Health Monitor server/kernel/core/HealthMonitor.ts
Process Manager server/kernel/core/ProcessManager.ts
Discovery server/kernel/discovery/*.ts
Dashboard server/kernel/dashboard/DashboardServer.ts

🎯 Próximos Passos Sugeridos

  1. Criar especificação técnica para cada funcionalidade faltante
  2. Priorizar baseado em necessidades de produção
  3. Implementar gradualmente, começando por Secrets e Circuit Breaker

Responsável: Equipe de Platform/Infra
Timeline: 2-4 semanas por funcionalidade