Pular para o conteúdo principal
O Lender é um único serviço Go, empacotado como container e configurado inteiramente por variáveis de ambiente. Esta página é a referência do operador: o que ele executa, do que depende, as configurações que importam e como a tenancy e o roteamento no ledger se comportam.

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:
EndpointPropósito
GET /healthLiveness.
GET /readyzReadiness de dependências.
GET /versionMetadados de build e versão.

Dependências


DependênciaPapel
PostgreSQL 17Armazenamento 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.
RabbitMQTransporte do publicador de eventos, impulsionado por um dispatcher de outbox transacional.
RedPandaBackbone de streaming para o catálogo de eventos do ciclo de vida (via biblioteca de streaming da Lerian).
MidazO 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.
CasdoorProvedor de identidade que respalda a autorização de rotas (via biblioteca de auth da Lerian).
SystemplanePlano 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.
GrupoChaveO que controla
AppENV_NAME, LOG_LEVEL, DEPLOYMENT_MODE, SERVER_ADDRESSNome do ambiente, verbosidade de logs, modo de implantação e endereço de escuta.
TenancyMULTI_TENANT_ENABLED, DEFAULT_TENANT_IDAlternar entre modos single- e multi-tenant, e o tenant usado em single-tenant.
Tenancy (MT)MULTI_TENANT_MAX_TENANT_POOLS, MULTI_TENANT_CIRCUIT_BREAKER_THRESHOLDTeto de pools de conexão por tenant e ponto de disparo do circuit breaker.
PostgresPOSTGRES_HOST, POSTGRES_PORT, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_NAME, POSTGRES_SSLMODE, MIGRATIONS_PATHConexão ao banco primário e migrações.
CacheREDIS_HOST, REDIS_PASSWORD, M2M_CREDENTIAL_CACHE_TTL_SECConexão ao Valkey e por quanto tempo as credenciais M2M são cacheadas.
MensageriaRABBITMQ_ENABLED, RABBITMQ_HOST, OUTBOX_ENABLED, OUTBOX_DISPATCH_INTERVAL_SECTransporte RabbitMQ e a cadência do dispatcher do outbox.
StreamingSTREAMING_ENABLED, STREAMING_BROKERS, STREAMING_TLS_ENABLEDToggle de streaming de eventos, endereços de brokers e TLS.
AuthPLUGIN_AUTH_ENABLEDHabilita a autorização de rotas contra o provedor de identidade.
Ledger M2MAWS_REGIONRegião do Secrets Manager que guarda as credenciais do Midaz por tenant.
ObservabilidadeENABLE_TELEMETRY, OTEL_EXPORTER_OTLP_ENDPOINTToggle de telemetria e endpoint do coletor OTLP.
LimitesRATE_LIMIT_ENABLEDRate limiting de requisições.
DocsSWAGGER_ENABLEDServe 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.