Sistema de Integração Empresarial Multi-tenant com PostgreSQL + Redis
O TOTVS Integration Hub é uma plataforma robusta de integração empresarial que permite conectar diferentes sistemas, bancos de dados e APIs de forma segura e escalável. Desenvolvido com arquitetura multi-tenant, oferece suporte a múltiplos conectores e execução de integrações em tempo real.
# 1. Clone
git clone <repository-url>
cd totvs-integration-prototype
# 2. Inicie os serviços
docker-compose up -d
# 3. Pronto! Acesse:
curl http://localhost:8081/actuator/health
open http://localhost:8081/swagger-ui.htmlTudo rodando em 2 minutos! ✨
- 🔌 11 Tipos de Conectores: PostgreSQL, MySQL, Oracle, SQL Server, REST API, Email, Arquivos (CSV/JSON/XML), MongoDB, Webhooks
- 🏢 Multi-tenancy: Isolamento completo de dados por tenant
- 📊 Monitoramento: Health checks, métricas e logs de execução
- 🔒 Segurança: Rate limiting, validação de dados e interceptors
- 📈 Performance: Redis para cache, pool de conexões otimizado
- 🧪 Qualidade: 47+ testes automatizados
- 📚 Documentação: Swagger UI integrado
- ✅ Production Ready: Docker Compose, Health Checks, Prometheus
| Serviço | Porta | URL | Credenciais |
|---|---|---|---|
| PostgreSQL | 5435 | jdbc:postgresql://localhost:5435/integration_hub |
user: postgres / pass: postgres |
| Redis | 6380 | redis://localhost:6380 |
— |
| Application | 8081 | http://localhost:8081 |
— |
| Swagger UI | 8081 | http://localhost:8081/swagger-ui.html |
— |
| PgAdmin | 8082 | http://localhost:8082 |
user: admin@totvs.com / pass: admin123 |
Frontend API: Spring Boot 3.1.5 + Java 17
Database: PostgreSQL 15+ (Produção) + H2 (Testes)
Cache: Redis 7.4+
ORM: Hibernate/JPA
Build: Maven
Containers: Docker + Docker Compose
Monitoring: Actuator + Prometheus
Documentation: Swagger/OpenAPI 3
totvs-integration-prototype/
├── 📁 src/main/java/com/totvs/integration/
│ ├── 🔧 config/ # Configurações (Redis, Swagger, Web)
│ ├── 🔌 connector/ # Conectores (Database, REST, Email, File)
│ ├── 🎮 controller/ # Controllers REST API
│ ├── 📦 dto/ # Data Transfer Objects
│ │ ├── connector/ # DTOs específicos de conectores
│ │ ├── request/ # Request DTOs
│ │ └── response/ # Response DTOs
│ ├── 🗄️ entity/ # Entidades JPA
│ ├── ⚠️ exception/ # Tratamento de exceções
│ ├── 📚 repository/ # Repositórios JPA
│ ├── 🔐 security/ # Multi-tenancy e segurança
│ └── ⚙️ service/ # Lógica de negócio
├── 📁 src/main/resources/
│ ├── application.yml # Configuração principal
│ └── application-production.yml # Configuração de produção
├── 📁 src/test/ # Testes automatizados
├── 🐳 docker-compose.yml # PostgreSQL + Redis + PgAdmin
├── 📊 monitoring/prometheus.yml # Configuração Prometheus
├── 🔧 Scripts utilitários:
│ ├── scripts/start.sh # Iniciar aplicação
│ ├── scripts/stop.sh # Parar serviços
│ ├── scripts/verify.sh # Verificação do sistema
│ └── scripts/test-api.sh # Testes da API
├── 📁 docs/ # Documentação técnica
└── 📖 README.md # Este arquivo
git clone <repository-url>
cd totvs-integration-prototype# Subir containers
docker-compose up -d
# Verificar se está rodando
docker-compose ps
# Esperado: 4 containers com status "Up"# Opção 1: Usando Maven
mvn spring-boot:run
# Opção 2: Usando script
./scripts/start.sh
# Opção 3: Compilar e executar JAR
mvn clean package
java -jar target/integration-prototype-1.0.0-SNAPSHOT.jar# Health check
curl http://localhost:8081/actuator/health
# Resultado esperado:
# {"status":"UP","components":{"db":{"status":"UP"},"redis":{"status":"UP"}...}}
# Acessar interfaces:
open http://localhost:8081/swagger-ui.html # API Documentation
open http://localhost:8082 # PgAdmin (Database Management)# 1. Health check
curl http://localhost:8081/actuator/health
# 2. List tenants
curl http://localhost:8081/v1/tenants
# 3. System info
curl http://localhost:8081/v1/system/info
# 4. Access UI
open http://localhost:8081/swagger-ui.htmlGET /actuator/health # Spring Boot Actuator health
GET /api/v1/health # Health customizado com detalhes
GET /api/v1/health/simple # Health simples (OK/FAIL)
GET /api/v1/health/ready # Readiness probe
GET /api/v1/health/live # Liveness probe
GET /v1/system/info # Informações do sistemaGET /api/connectors/types # Listar tipos disponíveis
GET /api/connectors/{type}/schema # Schema de configuração
POST /api/connectors/validate # Validar configuração
POST /api/connectors/test # Testar conectividade
GET /api/connectors/templates # Templates de configuraçãoGET /v1/tenants # Listar tenants (paginado)
POST /v1/tenants # Criar novo tenant
GET /v1/tenants/{id} # Obter tenant específico
PUT /v1/tenants/{id} # Atualizar tenant
DELETE /v1/tenants/{id} # Deletar tenant
GET /v1/tenants/{id}/stats # Estatísticas do tenant
POST /v1/tenants/{id}/regenerate-api-key # Regenerar API keyGET /v1/integrations # Listar integrações
POST /v1/integrations # Criar integração
GET /v1/integrations/{id} # Obter integração
PUT /v1/integrations/{id} # Atualizar integração
DELETE /v1/integrations/{id} # Deletar integração
POST /v1/integrations/{id}/execute # Executar integração
GET /v1/integrations/{id}/logs # Logs de execuçãoGET /swagger-ui.html # Interface Swagger UI
GET /v3/api-docs # Especificação OpenAPI 3
GET /actuator/prometheus # Prometheus MetricsPostgreSQL (Produção)
spring:
datasource:
url: jdbc:postgresql://localhost:5435/integration_hub
username: postgres
password: postgres
jpa:
hibernate:
ddl-auto: update
show-sql: falseH2 (Testes)
spring:
datasource:
url: jdbc:h2:mem:testdb
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create-dropspring:
data:
redis:
host: localhost
port: 6380
timeout: 2000msapp:
multi-tenant:
enabled: true
default-tenant: default
header-name: X-Tenant-ID# Testes unitários e de integração
mvn test
# Testes específicos
mvn test -Dtest=HealthControllerTest
mvn test -Dtest=TenantServiceTest
# Com cobertura
mvn clean test jacoco:report# Script completo de testes
./scripts/test-api.sh
# Verificação de saúde de todos os serviços
./scripts/verify.sh- ✅ Controllers: Health, Tenant, Integration, Connector
- ✅ Services: TenantService, ConnectorService
- ✅ Repositories: TenantRepository
- ✅ Total: 47+ testes automatizados
| Tipo | Descrição | Status |
|---|---|---|
DATABASE_POSTGRESQL |
PostgreSQL Database | ✅ |
DATABASE_MYSQL |
MySQL Database | ✅ |
DATABASE_ORACLE |
Oracle Database | ✅ |
DATABASE_SQLSERVER |
SQL Server Database | ✅ |
REST_API |
REST API endpoints | ✅ |
EMAIL_SMTP |
Email SMTP | ✅ |
FILE_CSV |
Arquivos CSV | ✅ |
FILE_JSON |
Arquivos JSON | ✅ |
FILE_XML |
Arquivos XML | ✅ |
MONGODB |
MongoDB Database | ✅ |
WEBHOOK |
Webhooks HTTP | ✅ |
# docker-compose.yml
services:
postgres: # PostgreSQL 15 (porta 5435)
redis: # Redis 7.4 (porta 6380)
pgadmin: # PgAdmin 4 - Web UI (porta 8082)
app: # Application (porta 8081)# Iniciar todos os serviços
docker-compose up -d
# Parar serviços
docker-compose stop
# Remover containers
docker-compose down
# Ver logs
docker-compose logs -f postgres
docker-compose logs -f redis
docker-compose logs -f app
# Verificar status
docker-compose ps- PostgreSQL:
localhost:5435(user:postgres/ pass:postgres) - Redis:
localhost:6380 - PgAdmin:
http://localhost:8082(user:admin@totvs.com/ pass:admin123) - Application:
http://localhost:8081
# Verificação de saúde
curl http://localhost:8081/actuator/health
# Resultado esperado:
{
"status": "UP",
"components": {
"db": { "status": "UP", "details": { "database": "PostgreSQL" } },
"redis": { "status": "UP", "details": { "version": "7.4" } },
"diskSpace": { "status": "UP" }
}
}- Health Status: Database, Redis, Disk Space
- Performance: Response times, connection pools
- Business: Tenants ativos, integrações executadas
- System: Memory usage, CPU, uptime
# Configuração disponível em:
monitoring/prometheus.yml
# Métricas expostas em:
http://localhost:8081/actuator/prometheusTodas as requisições devem incluir o header:
X-Tenant-ID: {tenant-id}- Por Tenant: Configurável via banco de dados
- Global: Proteção contra DDoS
- Por Endpoint: Limits específicos
- Input Validation: Todos os DTOs validados
- SQL Injection: Prevenção via JPA/Hibernate
- XSS Protection: Headers de segurança
# Usando script automatizado
./scripts/start.sh
# Manual
mvn clean package
docker-compose up -d
java -jar target/*.jar# Deploy automatizado
./scripts/deploy.sh prod
# Variáveis de ambiente necessárias:
export DB_URL=jdbc:postgresql://prod-db:5432/integration_hub
export DB_USERNAME=prod_user
export DB_PASSWORD=secure_password
export REDIS_HOST=prod-redis| Métrica | Valor |
|---|---|
| Startup Time | ~10 segundos |
| Health Check | < 1ms |
| Database Connection | < 100ms |
| Redis Connection | < 50ms |
| API Response | 1-5ms (média) |
- HikariCP: Pool de conexões otimizado
- Redis Caching: Cache de sessões e dados frequentes
- JPA Queries: Queries otimizadas com índices
- JSON Serialization: Jackson otimizado
1. Erro de Conexão PostgreSQL
# Verificar se container está rodando
docker-compose ps
# Ver logs
docker-compose logs postgres
# Reiniciar
docker-compose restart postgres2. Porta Já em Uso
# Verificar qual processo usa a porta
lsof -i :5435 # PostgreSQL
lsof -i :6380 # Redis
lsof -i :8081 # Application3. Testes Falhando
# Limpar e recompilar
mvn clean compile
# Executar com debug
mvn test -X# 1. Fork e clone o repositório
git clone <your-fork>
# 2. Subir ambiente de desenvolvimento
docker-compose up -d
# 3. Executar testes
mvn test
# 4. Executar aplicação
mvn spring-boot:run- Java: Seguir convenções Spring Boot
- DTOs: Usar Lombok para reduzir boilerplate
- Tests: JUnit 5 + Mockito
- Documentation: Javadoc para métodos públicos
- Commits: Usar Conventional Commits
- Docker Setup Guide
- Architecture Documentation
- API Usage Examples
- Deployment Guide
- Troubleshooting Guide
Este projeto é propriedade da TOTVS e está licenciado sob termos proprietários.
- API Documentation:
http://localhost:8081/swagger-ui.html - Health Check:
http://localhost:8081/actuator/health - Logs:
logs/application.log - Database UI:
http://localhost:8082(PgAdmin)
- ✅ 47+ Automated Tests — Todos passando
- ✅ Multi-Tenant Architecture — Isolamento completo de dados
- ✅ PostgreSQL 15 + Redis 7.4 — Production-ready
- ✅ Docker Compose — One-command deployment
- ✅ Health Checks — Todos os serviços monitorados
- ✅ API Documentation — Swagger UI fully integrated
- ✅ 11 Connector Types — Database, REST, Email, Files, MongoDB, Webhooks
- ✅ Security — Rate limiting, input validation, SQL injection prevention
✅ Migração MongoDB → PostgreSQL concluída com sucesso!