Documentação técnica • Autor: Leonardo Norbiato - Equipe de Engenharia
Cliente: Aster Technology / UVA Última Atualização: 15/09/2025 Autores: Leonardo Norbiato - Equipe de Engenharia

api-gateway

Gateway HTTP em Go — Proxy reverso, rate limiting, cache e observabilidade

Índice

1. OBJETIVO

Gateway HTTP em Go que aplica autenticação externa, rate limiting, cache, balanceamento de carga e observabilidade. Atua como ponto de entrada único para todos os microserviços do ecossistema Aster/UVA, implementando Clean Architecture com funcionalidades essenciais de proxy reverso, circuit breaker, rate limiting, cache em memória e extração automática de claims JWT para multi-tenancy.

2. ÚLTIMA REVISÃO

3. TECNOLOGIAS UTILIZADAS

Backend
Go 1.20, Gin v1.10.0 (HTTP), Viper v1.19.0 (config), Zap v1.27.0 (logging)
Prometheus v1.20.5 (métricas), Sony/gobreaker v0.4.1 (circuit breaker)
go-cache v2.1.0 (memória), JWT v5.2.1 (claims), validator/v10 v10.20.0
yaml.v3 v3.0.1 (config), Redis v9.7.0 (preparado), Repositórios: Local/GitHub
Frontend
Não aplicável (gateway puro)
Banco de Dados
Não aplicável (sem persistência própria)
Ferramentas de Conexão e Infraestrutura
Docker Compose (multi-stage), PostgreSQL 13 (Auth Service), SSL/TLS (Let's Encrypt)
Mock Service (testes), Rede compartilhada (astor_shared_network)

4. FUNCIONALIDADES E DOMÍNIOS

5. ARQUITETURA FRONTEND

Não aplicável - Gateway puro sem interface frontend

6. ARQUITETURA BACKEND

Controllers/Handlers
ProxyRequest (roteamento), HealthCheckHandler (/healthz), Métricas Prometheus (/metrics)
Features
Proxy reverso round-robin thread-safe, Circuit breaker (timeout 5s, max failures 3), Rate limiting (100 req/s, burst 20)
Cache opcional (TTL 30s), Extração automática JWT (tenant-id, user-id, user-name, isSuperAdmin), SSL/TLS com Let's Encrypt
Middlewares
CORS, Cache (chave SHA256), Rate Limit (golang.org/x/time/rate), External Auth (preparado), Request Validation (validator/v10), SSL
Repositories
Não aplicável (gateway stateless)
Entities/DTOs
ServerConfig, RouteConfig, BackendConfig, AuthServiceConfig, RateLimitConfig, CircuitBreakerConfig, CacheConfig
Helper/Utilities
Logger (Zap estruturado), Metrics (Prometheus RequestCounter), Cache (go-cache com limpeza), Balancer (round-robin atômico), Circuit Breaker (sony/gobreaker)

7. ROTAS E ENDPOINTS

/auth /products /commercial /facilities /contracts /admin /financial /hr /inventory /backoffice /common /events

Endpoints internos: /healthz (health check), /metrics (Prometheus)

8. ESTRUTURA DE DADOS, TABELAS E VIEWS

Não aplicável - Gateway stateless sem persistência própria

9. CONFIGURAÇÃO E VARIÁVEIS

Arquivo principal
configs/config.yaml
Sobrescrita via ENV
Prefixo API_GATEWAY_ (ex: API_GATEWAY_SERVER_PORT, API_GATEWAY_ENDPOINTS_[ROTA], API_GATEWAY_RATE_LIMIT_ENABLED)
Configurações principais
Porta: 8080 (HTTP), 443 (HTTPS); Rate Limit: 100 req/s, burst 20 (habilitado por padrão)
Circuit Breaker: timeout 5s, max failures 3, reset 10s (habilitado por padrão); Cache: TTL 30s (desabilitado por padrão)
SSL: Suporte a Let's Encrypt autocert e certificados manuais; Auth Service: https://auth.prod.aster.app.br, timeout 5s
Load Balancer: round_robin para todas as rotas

10. TREEVIEW DA ARQUITETURA

api-gateway/
├── cmd/
│   └── main.go                    # Ponto de entrada, inicialização
├── configs/
│   └── config.yaml               # Configuração principal
├── internal/
│   └── gateway/
│       ├── adapters/
│       │   ├── balancer/
│       │   │   └── roundrobin.go  # Balanceamento round-robin
│       │   └── circuitbreaker/
│       │       └── gobreaker_adapter.go # Circuit breaker
│       ├── config/
│       │   └── loader.go          # Carregamento de configuração
│       ├── handlers/
│       │   ├── health_check.go    # Health check endpoint
│       │   └── proxy_handler.go   # Handler principal de proxy
│       ├── middlewares/
│       │   ├── cache_middleware.go      # Cache de respostas
│       │   ├── cors_middleware.go       # Headers CORS
│       │   ├── external_auth_middleware.go # Auth externa
│       │   ├── rate_limit_middleware.go    # Rate limiting
│       │   ├── request_validation_middleware.go # Validação
│       │   └── ssl_middleware.go         # SSL/TLS
│       ├── router/
│       │   └── router.go          # Configuração de rotas
│       └── usecases/
│           └── proxy_usecase.go  # Lógica de proxy e JWT
├── pkg/
│   ├── cache/
│   │   └── cache.go              # Wrapper go-cache
│   ├── logger/
│   │   └── zap_logger.go         # Configuração Zap
│   └── metrics/
│       └── prometheus.go         # Métricas Prometheus
├── docker-compose.yml            # Orquestração de serviços
├── Dockerfile                    # Build multi-stage
├── go.mod                        # Dependências Go
├── go.sum                        # Checksums dependências
└── README.md                     # Documentação do projeto

11. INTEGRAÇÕES E DEPENDÊNCIAS

Serviços externos
Auth Service (JWT - https://auth.prod.aster.app.br), Microserviços backend (11 configurados), Prometheus (opcional, preparado), Redis (preparado, comentado), PostgreSQL (Auth Service via Docker Compose)
Dependências principais
gin-gonic/gin v1.10.0, spf13/viper v1.19.0, go.uber.org/zap v1.27.0, prometheus/client_golang v1.20.5
sony/gobreaker v0.4.1, patrickmn/go-cache v2.1.0, golang.org/x/time v0.8.0, golang.org/x/crypto v0.24.0
github.com/golang-jwt/jwt/v5 v5.2.1, github.com/go-playground/validator/v10 v10.20.0, gopkg.in/yaml.v3 v3.0.1

12. INTEGRAÇÕES EXTERNAS

Auth Service
Integração com microserviço de autenticação para validação JWT
Microserviços Backend
Roteamento para todos os microserviços do ecossistema Aster/UVA
Prometheus
Coleta de métricas de performance e monitoramento
Let's Encrypt
Certificados SSL/TLS automáticos

13. CONTROLE DE VERSÃO

14. SEGURANÇA E ACESSO

15. CONSIDERAÇÕES FINAIS

API Gateway robusto e extensível em Go, seguindo Clean Architecture, com funcionalidades essenciais de proxy reverso, balanceamento de carga, circuit breaker, rate limiting, cache e observabilidade. Preparado para produção com suporte a SSL, multi-tenancy via JWT e integração com ecossistema de microserviços Aster/UVA. Arquitetura modular permite fácil extensão e manutenção. O gateway implementa extração automática de claims JWT para multi-tenancy, com suporte especial para super admin, e está configurado para rotear 11 microserviços diferentes. A implementação inclui Docker Compose para desenvolvimento local com Auth Service e PostgreSQL, e está preparada para integração com Redis e Prometheus em ambientes de produção.

Retornar para home