실시간 모드가 AI 에이전트에게 즉각적인 여행 추천 및 컨텍스트를 제공하는 방법을 알아보세요
작성자: Sitesh Sharma, Aditya Kumar , Navneeth Nair
여행자가 호텔, 항공권 또는 경험을 검색할 때 매 순간이 중요합니다. 인도 최대 온라인 여행사인 MakeMyTrip은 실시간 속도와 관련성으로 경쟁합니다. 가장 중요한 기능 중 하나는 "최근 검색한" 호텔입니다. 사용자가 검색창을 탭하면 시스템과의 상호 작용을 기반으로 최근 관심사에 대한 실시간 개인화된 목록을 기대합니다.
MakeMyTrip의 규모에서 이러한 경험을 제공하려면 소비자 및 기업 여행 사업부 전반에 걸쳐 수백만 명의 일일 사용자를 지원하는 프로덕션 파이프라인에서 초당 밀리초 단위의 지연 시간이 필요합니다. Databricks의 Real-Time Mode (RTM)—Apache Spark™ Structured Streaming의 차세대 실행 엔진을 구현함으로써 MakeMyTrip은 비용 효율적인 인프라를 유지하고 엔지니어링 복잡성을 줄이면서 밀리초 수준의 지연 시간을 성공적으로 달성했습니다.
MakeMyTrip의 데이터 팀은 모든 사업부에 걸쳐 "최근 검색한" 호텔 워크플로우에 대해 초당 밀리초 단위의 지연 시간이 필요했습니다. 그들의 규모에서는 몇백 밀리초의 지연만으로도 사용자 여정에 마찰을 일으켜 클릭률에 직접적인 영향을 미칩니다.
Apache Spark의 마이크로 배치 모드는 팀이 광범위한 튜닝에도 불구하고 돌파할 수 없는 내재된 지연 시간 제한을 도입했습니다. 일관되게 1~2초의 지연 시간을 제공했으며, 이는 요구 사항에 비해 너무 느렸습니다.
다음으로, 그들은 약 10개의 스트리밍 파이프라인에 걸쳐 Apache Flink를 평가했으며, 이는 지연 시간 요구 사항을 해결했습니다. 그러나 Apache Flink를 두 번째 엔진으로 채택하는 것은 장기적으로 상당한 문제를 야기했을 것입니다.
MakeMyTrip은 이중 엔진 아키텍처를 원하지 않았기 때문에 Apache Flink는 장기적인 옵션이 아니었습니다. 팀은 스택을 분열시키기보다는 Apache Spark가 더 빨라질 때까지 기다리기로 결정했습니다.
따라서 Apache Spark Structured Streaming이 RTM을 도입했을 때 MakeMyTrip은 이를 채택한 첫 번째 고객이 되었습니다. RTM을 통해 Apache Spark에서 밀리초 수준의 지연 시간을 달성하여 다른 엔진을 도입하거나 플랫폼을 분할하지 않고도 실시간 요구 사항을 충족할 수 있었습니다.
두 개의 엔진을 유지하는 것은 복잡성을 두 배로 늘리고 배치 및 실시간 계산 간의 로직 드리프트 위험을 증가시키는 것을 의미합니다. 우리는 두 개의 엔진을 유지하는 대신 하나의 Spark 기반 파이프라인, 즉 단일 진실 공급원을 원했습니다. Real-Time Mode는 우리가 원했던 단순성으로 필요한 성능을 제공했습니다." — Aditya Kumar, MakeMyTrip 엔지니어링 부사장
RTM은 마이크로 배치 실행에 내재된 지연 시간 소스를 제거하기 위해 함께 작동하는 세 가지 주요 기술 혁신을 통해 지속적이고 낮은 지연 시간의 처리를 제공합니다.
이러한 혁신은 함께 Apache Spark가 이전에 특수 엔진으로만 가능했던 밀리초 규모의 파이프라인을 달성할 수 있도록 합니다. RTM의 기술적 기반에 대해 자세히 알아보려면 이 블로그, “마이크로 배치 장벽 돌파: Apache Spark Real-Time Mode의 아키텍처”를 읽어보세요.

MakeMyTrip의 파이프라인은 고성능 경로를 따릅니다.
스트리밍 쿼리에서 RTM을 사용하는 것은 비즈니스 로직을 다시 작성하거나 파이프라인을 재구성할 필요가 없습니다. 필요한 유일한 코드 변경은 다음 코드 스니펫에 표시된 대로 트리거 유형을 RealTimeTrigger로 설정하는 것입니다.
한 가지 인프라 고려 사항: 클러스터 작업 슬롯은 소스 및 셔플 스테이지의 총 활성 작업 수보다 크거나 같아야 합니다. MakeMyTrip 팀은 프로덕션에 들어가기 전에 충분한 동시성을 보장하기 위해 Kafka 파티션, 셔플 파티션 및 파이프라인 복잡성을 사전에 분석했습니다.
RTM의 첫 번째 채택자로서 MakeMyTrip은 Databricks 엔지니어링과 직접 협력하여 파이프라인을 프로덕션 준비 상태로 만들었습니다. 여러 기능은 빌드, 튜닝 및 검증을 위해 두 팀 간의 적극적인 협업이 필요했습니다.
RTM은 즉각적인 개인화와 향상된 응답성, 클릭률을 통한 참여도 향상, 단일 통합 엔진의 운영 단순화를 가능하게 했습니다. 주요 지표는 아래와 같습니다.
MakeMyTrip의 배포 사례는 RTM on Spark가 실시간 애플리케이션에 필요한 매우 낮은 지연 시간을 제공함을 증명합니다. RTM은 익숙한 Spark API를 기반으로 구축되었기 때문에 배치 및 실시간 파이프라인 전반에 걸쳐 동일한 비즈니스 로직을 사용할 수 있습니다. 더 이상 실시간 처리를 위한 두 번째 플랫폼이나 별도의 코드베이스를 유지 관리하는 오버헤드가 필요 없으며, 단 한 줄의 코드로 Spark에서 RTM을 활성화할 수 있습니다.
Real-Time Mode를 통해 여러 스트리밍 엔진을 관리하지 않고도 인프라를 압축하고 실시간 경험을 제공할 수 있었습니다. AI 에이전트 시대를 맞이하여 효과적으로 제어하려면 데이터 스트림에서 실시간 컨텍스트를 구축해야 합니다. Spark RTM을 사용하여 에이전트가 최상의 결정을 내리는 데 필요한 가장 풍부하고 최신 컨텍스트를 제공하는 실험을 하고 있습니다.” — Aditya Kumar, MakeMyTrip 엔지니어링 총괄 부사장
Real-Time Mode에 대해 자세히 알아보려면 시작하는 방법에 대한 온디맨드 동영상을 시청하거나 설명서를 검토하세요.
(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)
블로그를 구독하고 최신 게시물을 이메일로 받아보세요.