대규모 공급자 카탈로그 및 시간 초과를 방지하는 청크 가져오기 파이프라인에 대한 Tourplan XML 가져오기 실패

게시 됨: 2025-11-25

수백 개의 공급업체로부터 데이터를 지속적으로 수집하고 업데이트해야 하는 빠르게 변화하는 여행 기술의 세계에서는 성능과 안정성이 미션 크리티컬이 됩니다. 많은 기업들이 XML 가져오기 기능을 통해 공급업체 콘텐츠를 처리하기 위해 선도적인 여행 관리 시스템인 Tourplan을 사용하고 있습니다. 그러나 공급업체 카탈로그의 규모가 커지면서(때로는 수십만 개의 제품에 도달) 전통적인 XML 가져오기 프로세스가 실패하기 시작했습니다. 이러한 병목 현상으로 인해 개발자는 시스템 안정성과 성능을 유지하기 위해 더 스마트하고 분할된 가져오기 파이프라인을 구현하게 되었습니다.

TL;DR

XML을 통해 대규모 공급업체 카탈로그를 Tourplan으로 가져올 때 많은 회사에서 반복적인 실패와 시간 초과 오류에 직면했습니다. 이 문제는 시스템이 단일 트랜잭션에서 대규모 XML 페이로드를 처리할 수 없기 때문에 발생했습니다. 데이터를 더 작고 관리 가능한 부분으로 나누는 청크 가져오기 파이프라인을 도입하여 시간 초과 없이 성공적으로 처리할 수 있었습니다. 이 솔루션은 대량의 공급업체 데이터를 처리하는 Tourplan 사용자의 신뢰성과 확장성을 모두 향상시켰습니다.

대규모 XML 가져오기의 과제

본질적으로 Tourplan의 XML 데이터 가져오기 기능은 공급업체 콘텐츠 수집의 자동화를 촉진하도록 설계되었습니다. 공급업체는 호텔, 여행, 가격 구조, 계절별 규칙, 가용성 달력 등의 대규모 데이터 세트가 포함된 XML 파일을 생성합니다. 이러한 파일은 여행사에서 재고를 최신 상태로 유지하는 데 필수적입니다.

그러나 많은 팀에서 심각한 문제에 직면하기 시작했습니다. 이러한 XML 파일의 크기가 증가함에 따라 시간 초과, 서버의 메모리 압박 또는 완전한 충돌로 인해 가져오기 프로세스가 실패하기 시작했습니다. 근본 문제는 몇 가지 주요 제한 사항으로 요약됩니다.

  • 단일 스레드 가져오기: Tourplan의 XML 가져오기는 전체 파일을 한 번에 처리하여 막대한 리소스를 소비했습니다.
  • 진행 상황 추적 없음: 가져오기 프로세스가 시작된 후에는 일시 중지, 재개 또는 오류로부터 정상적으로 복구할 수 있는 방법이 없습니다.
  • 일괄 처리 메커니즘 부족: 가져오기 파이프라인은 모든 데이터가 메모리 내에서 구문 분석되고 검증될 수 있다고 가정했습니다.

결과는? 가져오기 실패, 데이터 세트 손상, 공급업체 업데이트 백로그. 단순히 서버 리소스를 늘리는 것은 실행 가능한 장기적인 솔루션이 아니었습니다.

병목 현상을 나타내는 증상

Tourplan의 수입 파이프라인에 시스템적 병목 현상이 있음을 나타내는 몇 가지 명확한 증상이 나타났습니다.

  • 시간 초과 오류: 가져오기 작업은 몇 시간 동안만 실행된 후 서버 감시 타이머에 의해 종료됩니다.
  • 부분적인 데이터 수집: 팀은 일부 기록이 업데이트되었지만 다른 기록은 오래된 상태로 유지되어 가격 및 가용성이 일관되지 않음을 발견했습니다.
  • 지원 티켓 증가: 최종 사용자는 오래된 카탈로그에서 생성된 일정 및 견적에서 예외 사항을 발견하기 시작했습니다.

해마다 위험이 커지고 카탈로그 크기가 증가함에 따라 더 확장 가능하고 탄력적인 방법을 개발해야 했습니다.

해결책: 청크 가져오기 파이프라인

가져오기 아키텍처를 재고하면서 중요한 깨달음이 생겼습니다. 즉, 데이터를 단계적으로 또는 청크로 처리할 수 있다면 시간 초과 및 성능 충돌 위험을 크게 완화할 수 있다는 것입니다. 이 아이디어는 새로운 청크 가져오기 파이프라인을 탄생시켰습니다.

청킹이란 무엇입니까? XML 데이터 가져오기의 맥락에서 청킹은 큰 파일을 한 번에 하나씩 처리되는 더 작고 논리적으로 분리된 세그먼트로 나누는 것을 의미합니다. 각 세그먼트는 특정 종류의 데이터(호텔, 요금, 달력) 또는 동일한 데이터 유형의 조각(예: 청크당 5,000개의 호텔 개체)을 나타낼 수 있습니다.

청크 가져오기 파이프라인은 몇 가지 모범 사례를 따랐습니다.

  1. 전처리 단계: 원본 XML 파일은 먼저 닫는 태그 또는 사전 정의된 개체 그룹화와 같은 논리적 중단점을 식별하는 파서를 사용하여 분석되고 분할됩니다.
  2. 대기열 기반 처리: 각 결과 청크는 작업 대기열에 추가되고 시스템 메모리 과부하를 방지하기 위해 비동기식으로 처리됩니다.
  3. 오류 방지 체크포인트: 각 청크는 감사를 위한 메타데이터를 전달하며 오류가 발생할 경우 독립적으로 재시도할 수 있습니다.
  4. 진행 상황 추적 및 로깅: 완전한 투명성을 위해 각 청크의 성공/실패를 추적하기 위해 대시보드가 ​​구현되었습니다.

기술 구현 세부정보

이것이 기술적으로 어떻게 달성되었는지 확대해 보겠습니다.

1. 청킹 메커니즘

XML 스트리밍 파서(예: Java의 SAX 또는 StAX, Python의 lxml)를 사용하여 파일을 메모리에 한꺼번에 로드하는 대신 행 단위로 읽었습니다. 논리 노드(예: <호텔>, <여행>)는 독립형 문서로 별도의 파일 또는 메모리 블록으로 추출되었습니다.

2. 비동기 작업자 대기열

RabbitMQ 또는 AWS SQS와 같은 도구로 구동되는 작업 대기열은 청크 작업 제출을 관리했습니다. 여러 작업자가 동시에 실행되어 서로 다른 CPU 코어 또는 클러스터 노드에서 청크를 처리하여 성능을 크게 향상시킬 수 있습니다.

3. 오류 처리 프레임워크

한 청크가 실패하면 별도로 기록되어 전체 가져오기를 다시 실행하지 않고도 재처리할 수 있었습니다. 이로 인해 위험이 줄어들고 복구 시간이 크게 단축되었습니다.

생산에서 볼 수 있는 이점

청크 가져오기 시스템을 출시한 후 여러 여행사에서 눈에 띄는 개선이 관찰되었습니다.

  • 가져오기 실패 90% 감소: 이전에 시간 초과로 인해 실패했던 가져오기가 이제 문제 없이 완료됩니다.
  • 더 빠른 복구: 실패한 청크를 즉시 재시도할 수 있어 보다 민첩한 오류 수정이 가능합니다.
  • 서버 부하 감소: 청크가 더 작고 비동기적으로 처리되므로 메모리 및 CPU 사용량이 안정화되었습니다.
  • 투명성: 가져오기 로그 및 대시보드는 어떤 데이터가 처리되었고 어떤 데이터가 처리되지 않았는지에 대한 명확한 가시성을 제공했습니다.

이러한 접근 방식은 공급업체 업데이트가 빈번하고 시간에 민감한 성수기 여행 시즌에 특히 효과적인 것으로 입증되었습니다. 팀은 시스템을 중단시키거나 손상된 일정을 생성할 염려 없이 밤마다 또는 매시간 가져오기를 예약할 수 있습니다.

배운 교훈

이 경험은 현대 여행 플랫폼의 ETL(추출, 변환, 로드) 프로세스에 대한 몇 가지 중요한 교훈을 제공했습니다.

  • 규모의 중요성: 수천 개의 레코드에 작동하는 것이 수백만 개로 중단될 수 있습니다. 시스템은 데이터 볼륨에 따라 발전해야 합니다.
  • 관찰 가능성이 핵심입니다. 로그, 지표, 대시보드는 자동화된 가져오기 시스템의 기초가 되어야 합니다.
  • 실패를 위한 설계: 모든 것이 재시도 가능해야 하며 어떤 작업도 "완벽한 실행"을 가정해서는 안 됩니다.

향후 개선 사항 및 다음 단계

청크 파이프라인이 판도를 바꾸었지만 혁신은 거기서 끝나지 않았습니다. 현재 여러 회사에서 다음을 탐색하고 있습니다.

  • 실시간 공급업체 API 통합: REST API를 통해 데이터를 동기화하여 XML 파일 덤프를 완전히 우회합니다.
  • 에지에서의 데이터 검증: XSD 및 JSON-스키마를 사용하여 가져오기 전 검증을 구현하여 가비지 인 시나리오를 줄입니다.
  • 자동 확장 인프라: Kubernetes 또는 서버리스 프레임워크를 사용하여 작업 볼륨에 따라 가져오기 작업자 수를 동적으로 확장합니다.

결론

데이터는 모든 현대 여행사의 생명선입니다. 공급업체 생태계가 더욱 복잡해짐에 따라 Tourplan과 같은 시스템은 점점 더 크고 빈번해지는 업데이트를 처리할 수 있도록 발전해야 합니다. 청크 가져오기 파이프라인으로의 전환은 XML 가져오기 시간 초과 문제를 해결했을 뿐만 아니라 더욱 강력하고 효율적이며 확장 가능한 데이터 관리 생태계로의 문을 열었습니다.

이 아키텍처를 채택한 기업은 이제 더 높은 정확성과 가동 시간으로 수입품을 더 빠르게 처리하여 이전의 문제점을 경쟁 우위로 전환하고 있습니다.