- 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.
94 lines
3 KiB
Markdown
94 lines
3 KiB
Markdown
# 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
|
|
|
|
```mermaid
|
|
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)
|
|
|
|
```bash
|
|
docker-compose up --build
|
|
```
|
|
A API estará disponível na porta `4000`.
|
|
|
|
### Desenvolvimento Local
|
|
|
|
1. **Instale as dependências:**
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
2. **Configure o ambiente:**
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
3. **Execute em modo watch:**
|
|
```bash
|
|
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.
|