Falha na importação de XML do Tourplan para grandes catálogos de fornecedores e o pipeline de importação fragmentado que impedia o tempo limite

Publicados: 2025-11-25

No mundo acelerado da tecnologia de viagens, onde os dados de centenas de fornecedores precisam ser ingeridos e atualizados constantemente, o desempenho e a confiabilidade tornam-se essenciais. Muitas empresas confiam no Tourplan, um sistema líder de gerenciamento de viagens, para lidar com o conteúdo do fornecedor por meio de funcionalidades de importação de XML. No entanto, à medida que o tamanho dos catálogos de fornecedores cresceu — às vezes chegando a centenas de milhares de produtos — o processo tradicional de importação de XML começou a falhar. Esse gargalo levou os desenvolvedores a implementar um pipeline de importação mais inteligente e fragmentado para manter a estabilidade e o desempenho do sistema.

DR

Ao importar grandes catálogos de fornecedores para o Tourplan via XML, muitas empresas enfrentaram repetidas falhas e erros de tempo limite. O problema resultou da incapacidade do sistema de lidar com cargas XML massivas em uma única transação. A introdução de um pipeline de importação fragmentado, onde os dados são divididos em partes menores e gerenciáveis, permitiu o processamento bem-sucedido sem tempos limite. Esta solução melhorou a confiabilidade e a escalabilidade para os usuários do Tourplan que lidam com grandes volumes de dados de fornecedores.

O desafio das importações XML em grande escala

Basicamente, a função de importação de dados XML no Tourplan foi projetada para facilitar a automação da ingestão de conteúdo do fornecedor. Os fornecedores gerariam arquivos XML contendo enormes conjuntos de dados – hotéis, excursões, estruturas de preços, regras sazonais, calendários de disponibilidade e muito mais. Esses arquivos são essenciais para que as empresas de viagens mantenham os estoques atualizados.

No entanto, muitas equipes começaram a encontrar um problema crítico: à medida que o tamanho desses arquivos XML aumentava, o processo de importação começava a falhar devido a tempos limite, pressão de memória nos servidores ou falhas completas. A raiz do problema se resumia a algumas limitações importantes:

  • Importações de thread único: a importação XML do Tourplan processou o arquivo inteiro de uma só vez, consumindo vastos recursos.
  • Sem acompanhamento de progresso: depois que o processo de importação foi iniciado, não havia como pausar, retomar ou recuperar-se normalmente de uma falha.
  • Falta de mecanismos de processamento em lote: o pipeline de importação presumia que todos os dados poderiam ser analisados ​​e validados na memória.

O resultado? Falha nas importações, conjuntos de dados corrompidos e um acúmulo de atualizações de fornecedores. Simplesmente aumentar os recursos do servidor não era uma solução viável a longo prazo.

Sintomas que indicaram um gargalo

Surgiram vários sintomas claros que apontavam para um gargalo sistêmico no pipeline de importação da Tourplan:

  • Erros de tempo limite: os trabalhos de importação seriam executados por horas apenas para serem encerrados pelos temporizadores de watchdog do servidor.
  • Ingestão parcial de dados: as equipes perceberam que, embora alguns registros fossem atualizados, outros permaneciam desatualizados, resultando em preços e disponibilidade inconsistentes.
  • Aumento de tickets de suporte: os usuários finais começaram a notar anomalias em itinerários e cotações geradas a partir de catálogos desatualizados.

Com os riscos aumentando e os tamanhos dos catálogos aumentando ano após ano, era necessário desenvolver um método mais escalável e resiliente.

A solução: um pipeline de importação fragmentado

Repensar a arquitetura de importação levou a uma conclusão crítica: se os dados pudessem ser processados ​​em etapas, ou pedaços , o risco de tempos limite e falhas de desempenho poderia ser significativamente atenuado. Essa ideia deu origem ao novo pipeline de importação fragmentado.

O que é Chunking? No contexto das importações de dados XML, chunking refere-se à divisão de arquivos grandes em segmentos menores e separados logicamente que são processados ​​um de cada vez. Cada segmento pode representar um tipo específico de dados (hotéis, tarifas, calendários) ou até mesmo fatias de tipos de dados idênticos (por exemplo, 5.000 objetos de hotel por bloco).

O pipeline de importação fragmentado seguiu várias práticas recomendadas:

  1. Etapa de pré-processamento: O arquivo XML original é primeiro analisado e dividido usando um analisador que identifica pontos de interrupção lógicos, como tags de fechamento ou agrupamentos de objetos predefinidos.
  2. Processamento baseado em fila: cada pedaço resultante é adicionado a uma fila de trabalhos e processado de forma assíncrona para evitar sobrecarregar a memória do sistema.
  3. Pontos de verificação à prova de falhas: cada bloco carrega metadados para auditoria e pode ser repetido de forma independente em caso de falha.
  4. Acompanhamento e registro de progresso: Painéis foram implementados para rastrear o sucesso/falha de cada bloco para total transparência.

Detalhes de implementação técnica

Vamos ampliar como isso foi tecnicamente alcançado.

1. Mecanismo de fragmentação

Usando um analisador de streaming XML (como SAX ou StAX em Java, ou lxml em Python), o arquivo foi lido linha por linha em vez de ser carregado na memória de uma só vez. Nós lógicos (por exemplo, <Hotel>, <Excursão>) foram extraídos em arquivos separados ou blocos de memória como documentos independentes.

2. Fila de trabalho assíncrono

Uma fila de trabalhos, alimentada por ferramentas como RabbitMQ ou AWS SQS, gerenciava o envio de trabalhos em blocos. Vários trabalhadores poderiam ser executados simultaneamente para processar pedaços em diferentes núcleos de CPU ou nós de cluster, melhorando drasticamente o desempenho.

3. Estrutura de tratamento de erros

Se um pedaço falhasse, ele seria registrado separadamente e poderia ser reprocessado sem refazer toda a importação. Isso reduziu o risco e reduziu significativamente os tempos de recuperação.

Benefícios observados na produção

Depois de implementar o sistema de importação fragmentada, várias empresas de viagens observaram melhorias marcantes:

  • Redução de 90% nas falhas de importação: importações que falharam anteriormente devido ao tempo limite agora são concluídas sem problemas.
  • Recuperação mais rápida: os pedaços com falha podem ser repetidos instantaneamente, permitindo uma correção de erros mais ágil.
  • Carga reduzida do servidor: como os pedaços eram menores e processados ​​de forma assíncrona, o uso da memória e da CPU se estabilizou.
  • Transparência: Logs e painéis de importação forneceram visibilidade clara sobre quais dados foram processados ​​e quais não foram.

Esta abordagem provou ser particularmente eficaz durante os períodos de pico de viagens, quando as atualizações dos fornecedores são frequentes e urgentes. As equipes podiam agendar importações noturnas ou de hora em hora sem medo de derrubar sistemas ou gerar itinerários corrompidos.

Lições aprendidas

Esta experiência ofereceu diversas lições críticas para processos ETL (Extrair, Transformar, Carregar) em plataformas de viagens modernas:

  • A escala é importante: o que funciona para milhares de registros pode quebrar em milhões – os sistemas devem evoluir com o volume de dados.
  • A observabilidade é fundamental: logs, métricas e painéis devem ser fundamentais para qualquer sistema de importação automatizado.
  • Projeto para falha: tudo deve ser passível de nova tentativa e nenhuma operação deve assumir uma “execução perfeita”.

Melhorias Futuras e Próximas Etapas

Embora o pipeline fragmentado tenha mudado o jogo, a inovação não parou por aí. Várias empresas estão agora explorando:

  • Integrações de API de fornecedores em tempo real: Ignorando completamente os despejos de arquivos XML, sincronizando dados por meio de APIs REST.
  • Validação de dados na borda: implementação de validação de pré-importação usando XSDs e JSON-Schema para reduzir cenários de entrada de lixo.
  • Infraestrutura de escalonamento automático: uso de Kubernetes ou estruturas sem servidor para dimensionar dinamicamente o número de trabalhadores de importação com base no volume de trabalho.

Conclusão

Os dados são a força vital de qualquer empresa de viagens moderna. À medida que os ecossistemas de fornecedores se tornam mais complexos, sistemas como o Tourplan devem evoluir para lidar com atualizações cada vez maiores e frequentes. A mudança para um pipeline de importação fragmentado não apenas resolveu o problema dos tempos limite de importação de XML, mas também abriu a porta para um ecossistema de gerenciamento de dados mais robusto, eficiente e escalonável.

As empresas que adotaram esta arquitetura estão agora processando importações com mais rapidez, com maior precisão e tempo de atividade, transformando um antigo problema em uma vantagem competitiva.