Skip to content

ArthurDS-tech/Integration-Gateway

Repository files navigation

Integration Gateway

Gateway centralizado para integração com APIs externas (pagamentos, antifraude, bureaus de crédito). Implementa autenticação, caching, retry e circuit breaker de forma transparente.

Arquitetura

  • Proxy reverso com camadas de middleware para cada responsabilidade
  • Adapter Pattern para abstrair diferentes protocolos de APIs externas
  • Strategy Pattern para diferentes providers
  • Decorator Pattern para adicionar funcionalidades

Principais Features

  • ✅ Autenticação OAuth2 e API Keys
  • ✅ Rate limiting por cliente e endpoint
  • ✅ Cache inteligente com invalidação
  • ✅ Transformação de payloads (XML ↔ JSON)
  • ✅ Logs de auditoria completos
  • ✅ Circuit breaker e retry policies
  • ✅ Health checks ativos para dependências
  • ✅ Sandbox mode para testes

Stack Tecnológica

  • .NET 8 - Framework principal
  • PostgreSQL - Banco de dados
  • Redis - Cache e rate limiting
  • Polly - Resilience patterns
  • Serilog - Logging estruturado
  • xUnit - Testes unitários

Estrutura do Projeto

IntegrationGateway/
├── src/
│   ├── IntegrationGateway.Api/          # API Gateway
│   ├── IntegrationGateway.Core/         # Domain models e interfaces
│   └── IntegrationGateway.Infrastructure/ # Implementações concretas
├── tests/
│   └── IntegrationGateway.Tests/        # Testes unitários
└── IntegrationGateway.sln

🔧 Configuração

Pré-requisitos

  • .NET 8 SDK
  • PostgreSQL
  • Redis

Configuração do appsettings.json

{
  "ConnectionStrings": {
    "DefaultConnection": "Host=localhost;Database=integration_gateway;Username=postgres;Password=password",
    "Redis": "localhost:6379"
  },
  "Authentication": {
    "Authority": "https://your-auth-server.com",
    "Audience": "integration-gateway-api"
  },
  "Providers": {
    "Payment": {
      "Name": "PaymentProvider",
      "BaseUrl": "https://api.payment-provider.com",
      "SandboxUrl": "https://sandbox.payment-provider.com",
      "Authentication": {
        "Type": "OAuth2",
        "ClientId": "your-client-id",
        "ClientSecret": "your-client-secret",
        "TokenEndpoint": "https://auth.payment-provider.com/oauth/token"
      }
    }
  }
}

Como Executar

  1. Clone o repositório
git clone <repository-url>
cd IntegrationGateway
  1. Restaure as dependências
dotnet restore
  1. Configure as strings de conexão no appsettings.json

  2. Execute a aplicação

dotnet run --project src/IntegrationGateway.Api
  1. Acesse o Swagger
https://localhost:5001/swagger

Endpoints Principais

Executar Integração

POST /api/v1/integration/execute
Content-Type: application/json
Authorization: Bearer <token>

{
  "clientId": "client-123",
  "provider": "PaymentProvider",
  "endpoint": "process-payment",
  "method": "POST",
  "payload": {
    "amount": 100.00,
    "currency": "BRL"
  },
  "useSandbox": true
}

Verificar Providers Disponíveis

GET /api/v1/integration/providers
Authorization: Bearer <token>

Health Check de Provider

GET /api/v1/integration/health/{provider}
Authorization: Bearer <token>

Execução em Lote

POST /api/v1/integration/batch
Content-Type: application/json
Authorization: Bearer <token>

[
  {
    "clientId": "client-123",
    "provider": "PaymentProvider",
    "endpoint": "process-payment",
    "payload": { ... }
  }
]

Autenticação e Autorização

O gateway utiliza JWT Bearer tokens para autenticação. Configure seu servidor de autorização no appsettings.json.

Headers de rate limiting são retornados automaticamente:

  • X-RateLimit-Limit: Limite por período
  • X-RateLimit-Remaining: Requests restantes
  • X-RateLimit-Reset: Timestamp do reset

Monitoramento

Health Checks

  • /health - Status geral da aplicação
  • /health/ready - Readiness probe
  • /health/live - Liveness probe

Logs Estruturados

Logs são escritos em formato estruturado usando Serilog:

  • Console (desenvolvimento)
  • Arquivos rotativos (produção)
  • Integração com sistemas de observabilidade

Testes

Execute os testes unitários:

dotnet test

Padrões de Resiliência

Circuit Breaker

  • Threshold configurável de falhas
  • Timeout de abertura ajustável
  • Monitoramento de saúde automático

Retry Policy

  • Backoff exponencial
  • Jitter para evitar thundering herd
  • Retry apenas em erros transitórios

Rate Limiting

  • Por cliente e endpoint
  • Janelas deslizantes (minuto/hora/dia)
  • Headers informativos na resposta

🚀 Melhorias para Produção

  • Implementar versionamento de contratos
  • Adicionar métricas com Prometheus
  • Implementar distributed tracing
  • Cache distribuído com invalidação inteligente
  • Configuração dinâmica de providers
  • Dashboard de monitoramento
  • Alertas automáticos
  • Backup e disaster recovery

Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors