docs: adiciona análise de gap do Kernel

Documenta o que está implementado vs o que falta:
-  Service Discovery (parcial)
-  Health Monitor
-  Process Manager
-  Log Aggregator
-  Dashboard
-  Load Balancer
-  Circuit Breaker
-  Config Hot Reload
- ⚠️ Resource Limits (básico)
-  Secrets Management

Prioriza implementações críticas para produção.
This commit is contained in:
Jonas Pacheco 2026-04-09 10:55:31 -03:00
parent 0c4a4232bd
commit 41a9626f20
1 changed files with 235 additions and 0 deletions

235
docs/KERNEL_GAP_ANALYSIS.md Normal file
View File

@ -0,0 +1,235 @@
# Análise de Gap - Arcadia Kernel
**Data:** 09/04/2026
**Objetivo:** Comparar funcionalidades implementadas vs. sugeridas
---
## 📊 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:**
```typescript
// 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:**
```typescript
// 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:**
```typescript
// 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:**
```typescript
// 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
3. **Load Balancer** - Necessário para escalar
4. **Resource Limits** - Prevenir resource exhaustion
### Fase 3 - DX (Developer Experience)
5. **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