Saltar al contenido principal
Lender es un único servicio Go, empaquetado como contenedor y configurado por completo mediante variables de entorno. Esta página es la referencia del operador: qué se ejecuta, de qué depende, los ajustes que importan y cómo se comportan la tenancy y el enrutamiento al ledger.

El contenedor


Lender se construye desde un Dockerfile multi-etapa — un builder Go Alpine que produce un binario estático, copiado a un runtime distroless nonroot — y escucha en el puerto 8080. Se entrega como una imagen de contenedor que despliegas en tu clúster de con el tooling de ciclo de vida estándar de la plataforma; esta página no asume ningún empaquetado particular más allá de la imagen. Sondas operativas:
EndpointPropósito
GET /healthLiveness.
GET /readyzReadiness de dependencias.
GET /versionMetadatos de build y versión.

Dependencias


DependenciaRol
PostgreSQL 17Almacén de datos primario, con soporte primario/réplica y aislamiento schema-por-tenant en modo multi-tenant.
Valkey 8 (compatible con Redis)Caché, rate limiting y la caché de credenciales M2M.
RabbitMQTransporte del publicador de eventos, impulsado por un dispatcher de outbox transaccional.
RedPandaBackbone de streaming para el catálogo de eventos del ciclo de vida (vía la librería de streaming de Lerian).
MidazEl de partida doble, alcanzado a través del SDK oficial. Lender se autentica vía Access Manager con credenciales máquina-a-máquina (M2M) por tenant, obtenidas de AWS Secrets Manager y cacheadas en Valkey.
CasdoorProveedor de identidad que respalda la autorización de rutas (vía la librería de auth de Lerian).
SystemplanePlano de configuración en tiempo de ejecución, montado bajo /api/v1/systemplane.

Superficie de configuración


La configuración es enteramente por entorno. Las claves de abajo son un subconjunto curado — las que moldean el comportamiento — no la lista completa.
GrupoClaveQué controla
AppENV_NAME, LOG_LEVEL, DEPLOYMENT_MODE, SERVER_ADDRESSNombre de entorno, verbosidad de logs, modo de despliegue y dirección de escucha.
TenancyMULTI_TENANT_ENABLED, DEFAULT_TENANT_IDAlternar entre modos single- y multi-tenant, y el tenant usado en single-tenant.
Tenancy (MT)MULTI_TENANT_MAX_TENANT_POOLS, MULTI_TENANT_CIRCUIT_BREAKER_THRESHOLDTecho de pools de conexión por tenant y punto de disparo del circuit breaker.
PostgresPOSTGRES_HOST, POSTGRES_PORT, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_NAME, POSTGRES_SSLMODE, MIGRATIONS_PATHConexión a la base primaria y migraciones.
CachéREDIS_HOST, REDIS_PASSWORD, M2M_CREDENTIAL_CACHE_TTL_SECConexión a Valkey y cuánto se cachean las credenciales M2M.
MensajeríaRABBITMQ_ENABLED, RABBITMQ_HOST, OUTBOX_ENABLED, OUTBOX_DISPATCH_INTERVAL_SECTransporte RabbitMQ y la cadencia del dispatcher del outbox.
StreamingSTREAMING_ENABLED, STREAMING_BROKERS, STREAMING_TLS_ENABLEDToggle de streaming de eventos, direcciones de brokers y TLS.
AuthPLUGIN_AUTH_ENABLEDHabilita la autorización de rutas contra el proveedor de identidad.
Ledger M2MAWS_REGIONRegión del Secrets Manager que guarda las credenciales de Midaz por tenant.
ObservabilidadENABLE_TELEMETRY, OTEL_EXPORTER_OTLP_ENDPOINTToggle de telemetría y endpoint del colector OTLP.
LímitesRATE_LIMIT_ENABLEDRate limiting de peticiones.
DocsSWAGGER_ENABLEDSirve el documento OpenAPI y la UI de referencia de la API.

Modos multi-tenant


Lender corre en uno de dos modos:
  • Single-tenant — un tenant (DEFAULT_TENANT_ID), un esquema de base de datos y una organización de ledger y ledger fijados en tiempo de construcción usados como default de posting.
  • Multi-tenant (MULTI_TENANT_ENABLED=true) — persistencia schema-por-tenant, un pool de clientes de Midaz por tenant y eventos y postings de alcance por tenant. En este modo no hay default de ledger por entorno: el destino de ledger viene por transacción del perfil contable del producto.

Posting al ledger y enrutamiento fail-closed


Cada evento financiero se contabiliza en el ledger a través de una intención de posting durable y un relay asíncrono — la ruta completa está en Lender en la plataforma. La propiedad operativamente importante: el enrutamiento falla cerrado. Un posting se contabiliza en la organización de ledger y el ledger resueltos desde el perfil contable (single-tenant cae de vuelta al default por entorno); si ninguno resuelve un destino no vacío, Lender se niega a contabilizar en lugar de contabilizar en un ledger vacío o equivocado. En modo multi-tenant, un producto sin perfil contable por lo tanto no puede hacer posting — que es la salvaguarda buscada.

Próximos pasos


Lender en la plataforma

La ruta de posting, el catálogo de eventos y el aislamiento de tenants en detalle.