core/baas-control-plane/BAAS-CONTROL-PLANE.md
Tiago Yamamoto a52bd4519d refactor: optimize Dockerfiles and documentation for core services
- Use Google Distroless images for all services (Go & Node.js).
- Standardize documentation with [PROJECT-NAME].md.
- Add .dockerignore and .gitignore to all projects.
- Remove docker-compose.yml in favor of docker run instructions.
- Fix Go version and dependency issues in observability, repo-integrations, and security-governance.
- Add Podman support (fully qualified image names).
- Update Dashboard to use Node.js static server for Distroless compatibility.
2025-12-30 13:22:34 -03:00

3 KiB

BAAS-CONTROL-PLANE

O baas-control-plane é o orquestrador central para provisionamento e gestão de múltiplos backends-as-a-service (BaaS), como Appwrite e Supabase, oferecendo uma camada unificada de abstração para multi-tenancy.

📋 Visão Geral

Este serviço não armazena dados de negócio, mas sim metadados sobre tenants, projetos e recursos. Ele atua como um "plano de controle" que delega a criação de infraestrutura para drivers ou provedores específicos.

Arquitetura

graph TD
    Client[Dashboard / CLI] -->|HTTP REST| API[Control Plane API]
    
    subgraph Core Services
        API --> Provisioning[Provisioning Service]
        API --> Schema[Schema Sync]
        API --> Secrets[Secrets Manager]
        API --> Audit[Audit Logger]
    end

    subgraph Providers
        Provisioning -->|Driver Interface| Appwrite[Appwrite Provider]
        Provisioning -->|Driver Interface| Supabase[Supabase Provider]
    end

    Appwrite -->|API| AWS_Appwrite[Appwrite Instance]
    Supabase -->|API| AWS_Supabase[Supabase Hosting]
    
    API --> DB[(Metadata DB)]

🚀 Estrutura do Projeto

O projeto segue uma arquitetura modular baseada em Fastify:

Diretório Responsabilidade
src/core Configurações globais, plugins do Fastify e tratamento de erros.
src/modules Domínios funcionais (Tenants, Projects, etc.).
src/providers Implementações dos drivers para cada BaaS suportado.
src/lib Utilitários compartilhados.
docs/ Documentação arquitetural detalhada.

🛠️ Tecnologias e Otimizações

  • Backend: Node.js 20 + Fastify (Alta performance)
  • Linguagem: TypeScript
  • Validação: Zod
  • Containerização:
    • Baseada em gcr.io/distroless/nodejs20-debian12.
    • Multi-stage build para separação de dependências.
    • Segurança reforçada (sem shell, usuário non-root).

💻 Como Executar

Docker (Recomendado)

docker-compose up --build

A API estará disponível na porta 4000.

Desenvolvimento Local

  1. Instale as dependências:

    npm install
    
  2. Configure o ambiente:

    cp .env.example .env
    
  3. Execute em modo watch:

    npm run dev
    

🔌 Fluxos Principais

  1. Criar Tenant: Registra uma nova organização no sistema.
  2. Criar Projeto: Vincula um Tenant a um Provider (ex: Projeto "Marketing" no Appwrite).
  3. Provisionar: O Control Plane chama a API do Provider para criar bancos de dados, buckets e funções.
  4. Schema Sync: Aplica definições de coleção/tabela do sistema de forma agnóstica ao provider.

🔧 Detalhes do Dockerfile

O Dockerfile é otimizado para produção e segurança:

  • Builder: Compila o TypeScript.
  • Prod Deps: Instala apenas pacotes necessários para execução (--omit=dev).
  • Runtime (Distroless): Imagem final minúscula contendo apenas o runtime Node.js e os arquivos da aplicação.