Échec de l'importation XML Tourplan pour les catalogues de fournisseurs importants et le pipeline d'importation fragmenté qui a empêché les délais d'attente

Publié: 2025-11-25

Dans le monde en évolution rapide de la technologie du voyage, où les données provenant de centaines de fournisseurs doivent être ingérées et mises à jour en permanence, les performances et la fiabilité deviennent essentielles à la mission. De nombreuses entreprises s'appuient sur Tourplan, un système de gestion de voyages leader, pour gérer le contenu des fournisseurs via des fonctionnalités d'importation XML. Cependant, à mesure que la taille des catalogues de fournisseurs augmentait, atteignant parfois des centaines de milliers de produits, le processus d'importation XML traditionnel a commencé à échouer. Ce goulot d'étranglement a incité les développeurs à mettre en œuvre un pipeline d'importation plus intelligent et fragmenté pour maintenir la stabilité et les performances du système.

TL;DR

Lors de l’importation de catalogues de fournisseurs volumineux dans Tourplan via XML, de nombreuses entreprises ont été confrontées à des échecs répétés et à des erreurs de délai d’attente. Le problème provenait de l'incapacité du système à gérer des charges utiles XML massives en une seule transaction. L'introduction d'un pipeline d'importation fragmenté, dans lequel les données sont divisées en parties plus petites et gérables, a permis un traitement réussi sans délai d'attente. Cette solution a amélioré à la fois la fiabilité et l'évolutivité pour les utilisateurs de Tourplan gérant de gros volumes de données fournisseurs.

Le défi des importations XML à grande échelle

À la base, la fonction d'importation de données XML de Tourplan a été conçue pour faciliter l'automatisation de l'ingestion du contenu des fournisseurs. Les fournisseurs généreraient des fichiers XML contenant des ensembles de données massifs : hôtels, excursions, structures tarifaires, règles saisonnières, calendriers de disponibilité, etc. Ces fichiers sont indispensables aux agences de voyages pour tenir à jour leurs inventaires.

Cependant, de nombreuses équipes ont commencé à être confrontées à un problème critique : à mesure que la taille de ces fichiers XML augmentait, le processus d'importation commençait à échouer en raison de délais d'attente, de pression sur la mémoire des serveurs ou de pannes pures et simples. Le problème fondamental se résumait à quelques limitations clés :

  • Importations monothread : l'importation XML de Tourplan a traité l'intégralité du fichier en une seule fois, consommant d'énormes ressources.
  • Aucun suivi de la progression : une fois le processus d'importation démarré, il n'y avait aucun moyen de le suspendre, de le reprendre ou de se remettre correctement d'un échec.
  • Manque de mécanismes de traitement par lots : le pipeline d'importation supposait que toutes les données pouvaient être analysées et validées en mémoire.

Le résultat ? Échec des importations, ensembles de données corrompus et retard dans les mises à jour des fournisseurs. La simple augmentation des ressources du serveur n’était pas une solution viable à long terme.

Symptômes indiquant un goulot d'étranglement

Plusieurs symptômes clairs sont apparus, révélant un goulot d'étranglement systémique dans le pipeline d'importation de Tourplan :

  • Erreurs de délai d'attente : les tâches d'importation s'exécutaient pendant des heures et étaient interrompues par les minuteurs de surveillance du serveur.
  • Ingestion partielle de données : les équipes ont remarqué que même si certains enregistrements étaient mis à jour, d'autres restaient obsolètes, ce qui entraînait des prix et une disponibilité incohérents.
  • Augmentation des tickets d'assistance : les utilisateurs finaux ont commencé à remarquer des anomalies dans les itinéraires et les devis générés à partir de catalogues obsolètes.

Les enjeux étant de plus en plus importants et la taille des catalogues augmentant d’année en année, une méthode plus évolutive et plus résiliente devait être développée.

La solution : un pipeline d'importation fragmenté

Repenser l'architecture d'importation a conduit à une réalisation cruciale : si les données pouvaient être traitées par étapes, ou par morceaux , le risque d'expiration des délais et de pannes de performances pourrait être considérablement atténué. Cette idée a donné naissance au nouveau pipeline d’importation fragmenté.

Qu’est-ce que le chunking ? Dans le contexte des importations de données XML, le segmentage consiste à diviser des fichiers volumineux en segments plus petits et logiquement séparés qui sont traités un par un. Chaque segment peut représenter un type spécifique de données (hôtels, tarifs, calendriers) ou même des tranches de types de données identiques (par exemple, 5 000 objets hôteliers par bloc).

Le pipeline d'importation fragmenté a suivi plusieurs bonnes pratiques :

  1. Étape de prétraitement : le fichier XML d'origine est d'abord analysé et divisé à l'aide d'un analyseur qui identifie les points d'arrêt logiques tels que les balises de fermeture ou les regroupements d'objets prédéfinis.
  2. Traitement basé sur la file d'attente : chaque morceau résultant est ajouté à une file d'attente de tâches et traité de manière asynchrone pour éviter de surcharger la mémoire système.
  3. Points de contrôle de sécurité : chaque bloc contient des métadonnées pour l'audit et peut être réessayé indépendamment en cas d'échec.
  4. Suivi et journalisation des progrès : des tableaux de bord ont été mis en œuvre pour suivre le succès/l'échec de chaque morceau pour une transparence totale.

Détails de mise en œuvre technique

Zoomons sur la façon dont cela a été techniquement réalisé.

1. Mécanisme de regroupement

À l'aide d'un analyseur de streaming XML (tel que SAX ou StAX en Java, ou lxml en Python), le fichier a été lu ligne par ligne au lieu d'être chargé en mémoire d'un seul coup. Les nœuds logiques (par exemple, <Hôtel>, <Excursion>) ont été extraits dans des fichiers séparés ou des blocs de mémoire en tant que documents autonomes.

2. File d'attente de travailleurs asynchrone

Une file d'attente de tâches, alimentée par des outils comme RabbitMQ ou AWS SQS, gérait la soumission des tâches fragmentées. Plusieurs travailleurs pourraient s'exécuter simultanément pour traiter des morceaux sur différents cœurs de processeur ou nœuds de cluster, améliorant ainsi considérablement les performances.

3. Cadre de gestion des erreurs

Si un morceau échouait, il était enregistré séparément et pouvait être retraité sans refaire l'intégralité de l'importation. Cela a réduit le risque et raccourci considérablement les temps de récupération.

Avantages constatés en production

Après avoir déployé le système d’importation fragmentée, plusieurs agences de voyages ont observé des améliorations marquées :

  • Réduction de 90 % des échecs d'importation : les importations qui échouaient auparavant en raison d'un délai d'attente se sont désormais terminées sans problème.
  • Récupération plus rapide : les fragments défaillants peuvent être réessayés instantanément, ce qui permet une correction des erreurs plus agile.
  • Charge de serveur réduite : les fragments étant plus petits et traités de manière asynchrone, l'utilisation de la mémoire et du processeur s'est stabilisée.
  • Transparence : les journaux d'importation et les tableaux de bord ont fourni une visibilité claire sur les données traitées et celles qui ne l'ont pas été.

Cette approche s'est avérée particulièrement efficace pendant les saisons de pointe, lorsque les mises à jour des fournisseurs sont fréquentes et urgentes. Les équipes pouvaient planifier des importations nocturnes ou horaires sans craindre de faire tomber les systèmes ou de générer des itinéraires corrompus.

Leçons apprises

Cette expérience a offert plusieurs enseignements essentiels pour les processus ETL (Extract, Transform, Load) dans les plateformes de voyage modernes :

  • L'échelle compte : ce qui fonctionne pour des milliers d'enregistrements peut ne pas fonctionner pour des millions ; les systèmes doivent évoluer avec le volume de données.
  • L'observabilité est essentielle : les journaux, les mesures et les tableaux de bord doivent constituer la base de tout système d'importation automatisé.
  • Conception adaptée à l’échec : tout doit pouvoir être réessayé, et aucune opération ne doit jamais supposer un « exécution parfaite ».

Améliorations futures et prochaines étapes

Même si le pipeline fragmenté a changé la donne, l’innovation ne s’est pas arrêtée là. Plusieurs entreprises explorent désormais :

  • Intégrations d'API de fournisseur en temps réel : contournez complètement les vidages de fichiers XML en synchronisant les données via les API REST.
  • Validation des données à la périphérie : mise en œuvre de la validation avant importation à l'aide de XSD et de schéma JSON pour réduire les scénarios de gaspillage.
  • Infrastructure à mise à l'échelle automatique : utilisation de Kubernetes ou de frameworks sans serveur pour faire évoluer dynamiquement le nombre de travailleurs d'importation en fonction du volume de tâches.

Conclusion

Les données sont l’élément vital de toute agence de voyage moderne. À mesure que les écosystèmes de fournisseurs deviennent plus complexes, les systèmes comme Tourplan doivent évoluer pour gérer des mises à jour de plus en plus importantes et fréquentes. Le passage à un pipeline d'importation fragmenté a non seulement résolu le problème des délais d'attente d'importation XML, mais a également ouvert la porte à un écosystème de gestion des données plus robuste, efficace et évolutif.

Les entreprises qui ont adopté cette architecture traitent désormais les importations plus rapidement, avec une plus grande précision et une plus grande disponibilité, transformant ainsi un ancien problème en un avantage concurrentiel.