O container
O Lender é construído a partir de um Dockerfile multi-estágio — um builder Go Alpine produzindo um binário estático, copiado para um runtime distroless nonroot — e escuta na porta
8080. Ele é entregue como uma imagem de container que você implanta no seu cluster com o tooling de ciclo de vida padrão da plataforma; esta página não assume nenhum empacotamento específico além da imagem.
Sondas operacionais:
| Endpoint | Propósito |
|---|---|
GET /health | Liveness. |
GET /readyz | Readiness de dependências. |
GET /version | Metadados de build e versão. |
Dependências
| Dependência | Papel |
|---|---|
| PostgreSQL 17 | Armazenamento de dados primário, com suporte a primário/réplica e isolamento schema-por-tenant no modo multi-tenant. |
| Valkey 8 (compatível com Redis) | Cache, rate limiting e o cache de credenciais M2M. |
| RabbitMQ | Transporte do publicador de eventos, impulsionado por um dispatcher de outbox transacional. |
| RedPanda | Backbone de streaming para o catálogo de eventos do ciclo de vida (via biblioteca de streaming da Lerian). |
| Midaz | O de partidas dobradas, alcançado através do SDK oficial. O Lender se autentica via Access Manager com credenciais máquina-a-máquina (M2M) por tenant, obtidas do AWS Secrets Manager e cacheadas no Valkey. |
| Casdoor | Provedor de identidade que respalda a autorização de rotas (via biblioteca de auth da Lerian). |
| Systemplane | Plano de configuração em tempo de execução, montado sob /api/v1/systemplane. |
Superfície de configuração
A configuração é inteiramente dirigida por ambiente. As chaves abaixo são um subconjunto curado — as que moldam o comportamento — não a lista completa.
| Grupo | Chave | O que controla |
|---|---|---|
| App | ENV_NAME, LOG_LEVEL, DEPLOYMENT_MODE, SERVER_ADDRESS | Nome do ambiente, verbosidade de logs, modo de implantação e endereço de escuta. |
| Tenancy | MULTI_TENANT_ENABLED, DEFAULT_TENANT_ID | Alternar entre modos single- e multi-tenant, e o tenant usado em single-tenant. |
| Tenancy (MT) | MULTI_TENANT_MAX_TENANT_POOLS, MULTI_TENANT_CIRCUIT_BREAKER_THRESHOLD | Teto de pools de conexão por tenant e ponto de disparo do circuit breaker. |
| Postgres | POSTGRES_HOST, POSTGRES_PORT, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_NAME, POSTGRES_SSLMODE, MIGRATIONS_PATH | Conexão ao banco primário e migrações. |
| Cache | REDIS_HOST, REDIS_PASSWORD, M2M_CREDENTIAL_CACHE_TTL_SEC | Conexão ao Valkey e por quanto tempo as credenciais M2M são cacheadas. |
| Mensageria | RABBITMQ_ENABLED, RABBITMQ_HOST, OUTBOX_ENABLED, OUTBOX_DISPATCH_INTERVAL_SEC | Transporte RabbitMQ e a cadência do dispatcher do outbox. |
| Streaming | STREAMING_ENABLED, STREAMING_BROKERS, STREAMING_TLS_ENABLED | Toggle de streaming de eventos, endereços de brokers e TLS. |
| Auth | PLUGIN_AUTH_ENABLED | Habilita a autorização de rotas contra o provedor de identidade. |
| Ledger M2M | AWS_REGION | Região do Secrets Manager que guarda as credenciais do Midaz por tenant. |
| Observabilidade | ENABLE_TELEMETRY, OTEL_EXPORTER_OTLP_ENDPOINT | Toggle de telemetria e endpoint do coletor OTLP. |
| Limites | RATE_LIMIT_ENABLED | Rate limiting de requisições. |
| Docs | SWAGGER_ENABLED | Serve o documento OpenAPI e a UI de referência da API. |
Modos multi-tenant
O Lender roda em um de dois modos:
- Single-tenant — um tenant (
DEFAULT_TENANT_ID), um schema de banco de dados e uma organização de ledger e ledger fixados em tempo de construção usados como default de posting. - Multi-tenant (
MULTI_TENANT_ENABLED=true) — persistência schema-por-tenant, um pool de clientes do Midaz por tenant e eventos e postings com escopo por tenant. Nesse modo não há default de ledger por ambiente: o destino de ledger vem por transação do perfil contábil do produto.
Posting no ledger e roteamento fail-closed
Cada evento financeiro contabiliza no ledger através de uma intenção de posting durável e um relay assíncrono — a rota completa está em O Lender na plataforma. A propriedade operacionalmente importante: o roteamento falha fechado. Um posting é contabilizado na organização de ledger e no ledger resolvidos a partir do perfil contábil (single-tenant cai de volta ao default por ambiente); se nenhum resolver um destino não vazio, o Lender se recusa a contabilizar em vez de contabilizar num ledger vazio ou errado. No modo multi-tenant, um produto sem perfil contábil portanto não pode fazer posting — que é a salvaguarda pretendida.
Próximos passos
O Lender na plataforma
A rota de posting, o catálogo de eventos e o isolamento de tenants em detalhe.

