Fetcher en la plataforma Lerian
Los productos Lerian necesitan con frecuencia datos que viven fuera de la plataforma — extractos de transacciones en la base de datos operativa de un banco, movimientos en el MySQL de un socio, registros de clientes en un MongoDB. Antes de Fetcher, cada producto implementaba su propia lógica de acceso, con código duplicado y prácticas de seguridad inconsistentes. Fetcher centraliza ese trabajo. Productos como Reporter y Matcher lo usan para traer datos externos a sus flujos — generación de reportes, conciliación — y tus propios servicios pueden usar la misma API para cualquier acceso controlado y auditado a bases de datos externas. Fetcher ofrece cuatro capacidades centrales:
- Gestión de conexiones: Almacena, valida y prueba conexiones a bases de datos, con credenciales cifradas en reposo.
- Descubrimiento de esquemas: Detección automática de tablas, columnas y tipos de datos en todas las bases soportadas.
- Extracción de datos: Una interfaz de consulta unificada con proyección de campos, filtros y soporte multi-tabla, multi-esquema y multi-datasource.
- Orquestación de jobs: Procesamiento asíncrono con detección de duplicados, seguimiento de estado y eventos de finalización.
Arquitectura
Fetcher se ejecuta como dos servicios cooperantes sobre un núcleo embebible:
| Componente | Rol |
|---|---|
| Manager | Servidor de API HTTP para la gestión de conexiones y jobs. Almacena metadatos en MongoDB y despacha jobs de extracción vía RabbitMQ. |
| Worker | Procesador asíncrono de jobs. Consume jobs de la cola, extrae datos de las bases configuradas, cifra los resultados en object storage (SeaweedFS o cualquier servicio compatible con S3) y publica eventos job.completed / job.failed. |
| Engine | El núcleo de extracción (pkg/engine) sobre el que corren ambos servicios — ciclo de vida de conexiones, descubrimiento de esquemas, planificación de consultas, ejecución, límites y aislamiento de tenant. |
Bases de datos soportadas
| Base de datos | Versiones | Destacados |
|---|---|---|
| PostgreSQL | 12+ | Soporte multi-schema, parsing automático de JSONB, pooling de conexiones |
| MySQL | 8.0+ | Parsing automático de campos JSON, extracción multi-tabla, pooling de conexiones |
| Oracle | 19c+ | Namespaces de owner/schema, extracción multi-tabla, pooling de conexiones |
| SQL Server | 2019+ | Soporte multi-schema, coincidencia de filtros de tabla, pooling de conexiones |
| MongoDB | 7.0+ | Inferencia de esquema, muestreo estadístico, pipelines de agregación |
Postura de seguridad
Fetcher está construido para tocar bases de datos ajenas con seguridad:
- Una clave maestra, tres claves derivadas. Un único secreto
APP_ENC_KEYderiva — vía HKDF — claves independientes para el cifrado de credenciales (AES-256-GCM), la firma de mensajes internos entre Manager y Worker (HMAC-SHA256) y la firma de los documentos extraídos, para que los consumidores puedan verificar su autenticidad. - Protección contra SSRF. En despliegues multi-tenant, los hosts de las conexiones se validan contra rangos de direcciones privadas y de metadatos de nube antes de que Fetcher se conecte.
- Transporte fail-closed. Las conexiones inseguras (sin TLS) con la infraestructura se rechazan por defecto fuera del desarrollo local.
- Aislamiento multi-tenant. Cuando está habilitado, cada tenant recibe bases de metadatos, namespaces de caché y rutas de object storage aisladas, resueltas a partir del contexto de tenant basado en JWT — con costo cero cuando está deshabilitado.
Próximos pasos
Primeros pasos
Ejecuta Fetcher localmente y corre tu primer job de extracción.
Conceptos centrales
Conexiones, descubrimiento de esquemas, jobs de extracción y resultados.

