¡Hola, devs! 👋
Seguro que os ha pasado: el equipo de negocio os pide integrar una aplicación que tiene 25 años en el nuevo ecosistema de microservicios con Apache Kafka. Vas emocionado a revisar el sistema y descubres que... solo sabe escupir archivos planos de ancho fijo o CSVs en un servidor local.
No te lies a escribir un script en Node, Go o Python para monitorizar carpetas y parsear cadenas de texto. Vamos a ver cómo diseñar una solución robusta y 100% declarativa.
📐 La Arquitectura del Pipeline
El flujo de datos sigue un camino estrictamente controlado para asegurar rendimiento e integridad:
Fichero Legacy ➔ Kafka Connect (Parser) ➔ Verificación Hash (DynamoDB) ➔ Kafka Topic (Avro) ➔ S3 Sinks
🛠️ Los Componentes Clave
- Ingestión Inteligente con Kafka Connect Usamos conectores como Kafka Connect FilePulse. Te permite definir la gramática del archivo mediante archivos de configuración. Un ejemplo rápido de cómo luce un parser posicional (ancho fijo) dentro de la configuración del conector:
"filters.ParseFixedLength.type": "io.streamthoughts.kafka.connect.filepulse.filter.AppendFilter",
"filters.ParseFixedLength.output": "payload",
"filters.ParseFixedLength.value": "SUBSTRING(line, 0, 10) as id, SUBSTRING(line, 10, 30) as nombre"
2. La Capa de Idempotencia Estratégica
¿Qué pasa si el proceso legacy falla a la mitad y vuelve a enviar el archivo completo? Para evitar inundar Kafka con duplicados, la arquitectura calcula el Hash del payload en una Single Message Transformation (SMT) o paso intermedio y consulta una tabla de Amazon DynamoDB:
Clave de partición (PK): hash_evento
Operación: PutItem con expresión condicional attribute_not_exists(PK).
Si la base de datos devuelve un conflicto de claves, el registro es descartado limpiamente de forma automática.
3. El Almacenamiento Dual en S3 (El secreto del Cold Start)
No dejes los mensajes indefinidamente en Kafka con retenciones infinitas. Es costoso y difícil de mantener. En su lugar, usa un conector Sink hacia Amazon S3 dividido en dos estrategias:
Avro Bucket: Ideal para desarrolladores. Si despliegas un nuevo microservicio meses después, lee secuencialmente estos archivos e inicializa la base de datos local con datos históricos exactos (Cold Start).
Parquet Bucket: Ideal para analistas de datos. Consultas SQL ultrarrápidas con AWS Athena pagando solo por los bytes leídos de forma columnar.
🧠 Conclusión y Ventajas
No mantienes código: Todo se maneja mediante archivos de configuración JSON.
Exactly-Once: La combinación de DynamoDB y el motor de Kafka evita corrupciones de duplicidad de datos.
Escalable: Si entran 100 archivos en paralelo, Kafka Connect distribuye las tareas entre sus nodos trabajadores sin despeinarse.













