La importación XML de Tourplan falla para catálogos de proveedores grandes y el proceso de importación fragmentado que evitó los tiempos de espera

Publicado: 2025-11-25

En el acelerado mundo de la tecnología de viajes, donde los datos de cientos de proveedores deben incorporarse y actualizarse constantemente, el rendimiento y la confiabilidad se vuelven críticos. Muchas empresas confían en Tourplan, un sistema líder de gestión de viajes, para gestionar el contenido de los proveedores a través de funcionalidades de importación XML. Sin embargo, a medida que el tamaño de los catálogos de proveedores creció (en ocasiones alcanzando cientos de miles de productos), el proceso tradicional de importación XML comenzó a fallar. Este cuello de botella impulsó a los desarrolladores a implementar un proceso de importación fragmentado y más inteligente para mantener la estabilidad y el rendimiento del sistema.

TL;DR

Al importar grandes catálogos de proveedores a Tourplan a través de XML, muchas empresas se enfrentaban a fallos repetidos y errores de tiempo de espera. El problema surgió de la incapacidad del sistema para manejar cargas útiles XML masivas en una sola transacción. La introducción de un canal de importación fragmentado, donde los datos se dividen en partes más pequeñas y manejables, permitió un procesamiento exitoso sin tiempos de espera. Esta solución mejoró tanto la confiabilidad como la escalabilidad para los usuarios de Tourplan que manejan grandes volúmenes de datos de proveedores.

El desafío de las importaciones XML a gran escala

Básicamente, la función de importación de datos XML en Tourplan fue diseñada para facilitar la automatización de la ingesta de contenido de proveedores. Los proveedores generarían archivos XML que contienen conjuntos de datos masivos: hoteles, excursiones, estructuras de precios, reglas estacionales, calendarios de disponibilidad y más. Estos archivos son esenciales para que las empresas de viajes mantengan los inventarios actualizados.

Sin embargo, muchos equipos comenzaron a encontrar un problema crítico: a medida que aumentaba el tamaño de estos archivos XML, el proceso de importación comenzó a fallar debido a tiempos de espera, presión de memoria en los servidores o fallas absolutas. La raíz del problema se redujo a algunas limitaciones clave:

  • Importaciones de un solo subproceso: la importación XML de Tourplan procesó todo el archivo de una sola vez, consumiendo grandes recursos.
  • Sin seguimiento del progreso: una vez iniciado el proceso de importación, no había forma de pausarlo, reanudarlo o recuperarse correctamente de un error.
  • Falta de mecanismos de procesamiento por lotes: el proceso de importación asumió que todos los datos podrían analizarse y validarse en memoria.

¿El resultado? Importaciones fallidas, conjuntos de datos corruptos y una acumulación de actualizaciones de proveedores. Simplemente aumentar los recursos del servidor no era una solución viable a largo plazo.

Síntomas que indicaron un cuello de botella

Surgieron varios síntomas claros que apuntaban a un cuello de botella sistémico en el proceso de importación de Tourplan:

  • Errores de tiempo de espera: los trabajos de importación se ejecutarían durante horas y luego serían finalizados por los temporizadores de vigilancia del servidor.
  • Ingestión parcial de datos: los equipos notaron que, si bien algunos registros se actualizaban, otros permanecían desactualizados, lo que generaba precios y disponibilidad inconsistentes.
  • Aumento de tickets de soporte: los usuarios finales comenzaron a notar anomalías en los itinerarios y cotizaciones generadas a partir de catálogos obsoletos.

Dado que lo que está en juego es cada vez mayor y el tamaño de los catálogos aumenta año tras año, era necesario desarrollar un método más escalable y resiliente.

La solución: un canal de importación fragmentado

Repensar la arquitectura de importación llevó a una conclusión crítica: si los datos pudieran procesarse en etapas o fragmentos , el riesgo de tiempos de espera y caídas de rendimiento podría mitigarse significativamente. Esta idea dio origen al nuevo oleoducto de importación fragmentado.

¿Qué es la fragmentación? En el contexto de las importaciones de datos XML, la fragmentación se refiere a dividir archivos grandes en segmentos más pequeños y lógicamente separados que se procesan uno a la vez. Cada segmento podría representar un tipo específico de datos (hoteles, tarifas, calendarios) o incluso porciones de tipos de datos idénticos (por ejemplo, 5.000 objetos de hotel por fragmento).

El proceso de importación fragmentado siguió varias prácticas recomendadas:

  1. Paso de preprocesamiento: el archivo XML original primero se analiza y divide utilizando un analizador que identifica puntos de interrupción lógicos, como etiquetas de cierre o agrupaciones de objetos predefinidas.
  2. Procesamiento basado en colas: cada fragmento resultante se agrega a una cola de trabajos y se procesa de forma asincrónica para evitar sobrecargar la memoria del sistema.
  3. Puntos de control a prueba de fallas: cada fragmento contiene metadatos para auditoría y se puede volver a intentar de forma independiente en caso de falla.
  4. Seguimiento y registro del progreso: se implementaron paneles para realizar un seguimiento del éxito/fracaso de cada fragmento para lograr una transparencia total.

Detalles técnicos de implementación

Analicemos cómo se logró esto técnicamente.

1. Mecanismo de fragmentación

Utilizando un analizador de transmisión XML (como SAX o StAX en Java, o lxml en Python), el archivo se leía fila por fila en lugar de cargarse en la memoria de una vez. Los nodos lógicos (p. ej., <Hotel>, <Excursión>) se extrajeron en archivos separados o bloques de memoria como documentos independientes.

2. Cola de trabajadores asincrónicos

Una cola de trabajos, impulsada por herramientas como RabbitMQ o AWS SQS, gestionaba el envío de trabajos fragmentados. Varios trabajadores podrían ejecutarse simultáneamente para procesar fragmentos en diferentes núcleos de CPU o nodos de clúster, lo que mejoraría drásticamente el rendimiento.

3. Marco de manejo de errores

Si un fragmento fallaba, se registraba por separado y se podía reprocesar sin tener que rehacer toda la importación. Esto redujo el riesgo y acortó significativamente los tiempos de recuperación.

Beneficios observados en la producción

Después de implementar el sistema de importación fragmentada, varias compañías de viajes observaron mejoras notables:

  • Reducción del 90% en fallas de importación: las importaciones que anteriormente fallaban debido al tiempo de espera ahora se completan sin problemas.
  • Recuperación más rápida: los fragmentos fallidos se pueden reintentar instantáneamente, lo que permite una corrección de errores más ágil.
  • Carga reducida del servidor: debido a que los fragmentos eran más pequeños y se procesaban de forma asincrónica, el uso de memoria y CPU se estabilizó.
  • Transparencia: los registros y paneles de importación proporcionaron una visibilidad clara de qué datos se procesaron y cuáles no.

Este enfoque resultó particularmente eficaz durante las temporadas altas de viajes, cuando las actualizaciones de los proveedores son frecuentes y urgentes. Los equipos podían programar importaciones cada noche o cada hora sin temor a fallar los sistemas o generar itinerarios corruptos.

Lecciones aprendidas

Esta experiencia ofreció varias lecciones críticas para los procesos ETL (Extracción, Transformación, Carga) en plataformas de viajes modernas:

  • La escala importa: lo que funciona para miles de registros puede no funcionar para millones: los sistemas deben evolucionar con el volumen de datos.
  • La observabilidad es clave: los registros, las métricas y los paneles deben ser fundamentales para cualquier sistema de importación automatizado.
  • Diseño para el fracaso: todo debería poder reintentarse y ninguna operación debería suponer jamás un “ejecución perfecta”.

Mejoras futuras y próximos pasos

Si bien el proyecto fragmentado cambió las reglas del juego, la innovación no se detuvo ahí. Varias empresas están explorando ahora:

  • Integraciones de API de proveedores en tiempo real: evitando por completo los volcados de archivos XML mediante la sincronización de datos a través de API REST.
  • Validación de datos en el borde: implementación de validación previa a la importación utilizando XSD y JSON-Schema para reducir los escenarios de entrada de basura.
  • Infraestructura de escalamiento automático: uso de Kubernetes o marcos sin servidor para escalar dinámicamente la cantidad de trabajadores de importación en función del volumen de trabajo.

Conclusión

Los datos son el alma de cualquier empresa de viajes moderna. A medida que los ecosistemas de proveedores se vuelven más complejos, sistemas como Tourplan deben evolucionar para manejar actualizaciones cada vez más grandes y frecuentes. El cambio a un proceso de importación fragmentado no solo resolvió el problema de los tiempos de espera de importación de XML, sino que también abrió la puerta a un ecosistema de gestión de datos más sólido, eficiente y escalable.

Las empresas que han adoptado esta arquitectura ahora procesan las importaciones más rápido, con mayor precisión y tiempo de actividad, convirtiendo un antiguo problema en una ventaja competitiva.