Ogni millisecondo conta quando i viaggiatori cercano hotel, voli o esperienze. In quanto agenzia di viaggi online più grande dell'India, MakeMyTrip compete sulla velocità in tempo reale e sulla pertinenza. Una delle sue funzionalità più importanti è "hotel cercati di recente": non appena gli utenti toccano la barra di ricerca, si aspettano un elenco in tempo reale e personalizzato dei loro interessi recenti, basato sulla loro interazione con il sistema.
Alla scala di MakeMyTrip, offrire tale esperienza richiede una latenza inferiore al secondo su una pipeline di produzione che serve milioni di utenti giornalieri, sia per le linee di business dei viaggi consumer che corporate. Implementando la Modalità Real-Time (RTM) di Databricks, il motore di esecuzione di nuova generazione in Apache Spark™ Structured Streaming, MakeMyTrip ha raggiunto con successo latenze a livello di millisecondi, mantenendo un'infrastruttura conveniente e riducendo la complessità ingegneristica.
Il team dati di MakeMyTrip necessitava di una latenza inferiore al secondo per il flusso di lavoro "hotel cercati di recente" in tutte le linee di business. Alla loro scala, anche poche centinaia di millisecondi di ritardo creano attrito nel percorso utente, impattando direttamente i tassi di click-through.
La modalità micro-batch di Apache Spark introduceva limiti di latenza intrinseci che il team non poteva superare nonostante un'ampia ottimizzazione, fornendo costantemente una latenza da uno a due secondi, troppo lenta per le loro esigenze.
Successivamente, hanno valutato Apache Flink su circa 10 pipeline di streaming, che ha risolto i loro requisiti di latenza. Tuttavia, l'adozione di Apache Flink come secondo motore avrebbe introdotto significative sfide a lungo termine:
Poiché MakeMyTrip non ha mai voluto un'architettura a doppio motore, Apache Flink non era un'opzione praticabile a lungo termine. Il team ha preso una decisione architetturale deliberata: aspettare che Apache Spark diventasse più veloce, piuttosto che frammentare lo stack. Pertanto, quando Apache Spark Structured Streaming ha introdotto RTM, MakeMyTrip è diventato il primo cliente ad adottarlo. RTM ha permesso loro di raggiungere latenze a livello di millisecondi su Apache Spark, soddisfacendo i requisiti in tempo reale senza introdurre un altro motore o dividere la piattaforma.
Mantenere due motori significa raddoppiare la complessità e il rischio di deriva della logica tra i calcoli batch e in tempo reale. Volevamo una singola fonte di verità, una pipeline basata su Spark, piuttosto che due motori da mantenere. La Modalità Real-Time ci ha fornito le prestazioni di cui avevamo bisogno con la semplicità che volevamo." — Aditya Kumar, Associate Director of Engineering, MakeMyTrip
RTM fornisce un'elaborazione continua a bassa latenza attraverso tre innovazioni tecniche chiave che lavorano insieme per eliminare le fonti di latenza intrinseche nell'esecuzione micro-batch:
Insieme, queste innovazioni consentono ad Apache Spark di raggiungere pipeline su scala millisecondo che in precedenza erano possibili solo con motori specializzati. Per saperne di più sul fondamento tecnico di RTM, leggi questo blog, “Breaking the Microbatch Barrier: The Architecture of Apache Spark Real-Time Mode."

La pipeline di MakeMyTrip segue un percorso ad alte prestazioni:
Utilizzare RTM nella propria query di streaming non richiede la riscrittura della logica di business o la ristrutturazione delle pipeline. L'unica modifica al codice necessaria è impostare il tipo di trigger su RealTimeTrigger, come mostrato nel seguente snippet di codice:
L'unica considerazione infrastrutturale: gli slot dei task del cluster devono essere maggiori o uguali al numero totale di task attivi nelle fasi di sorgente e shuffle. Il team di MakeMyTrip ha analizzato le loro partizioni Kafka, le partizioni shuffle e la complessità della pipeline in anticipo per garantire una concorrenza sufficiente prima di andare in produzione.
In quanto primo adottatore di RTM, MakeMyTrip ha lavorato direttamente con l'ingegneria Databricks per portare la pipeline alla prontezza produttiva. Diverse funzionalità hanno richiesto una stretta collaborazione tra i due team per costruire, ottimizzare e validare.
RTM ha consentito la personalizzazione istantanea e una migliore reattività, un maggiore coinvolgimento misurato tramite tassi di click-through e una semplicità operativa di un singolo motore unificato. Le metriche chiave sono mostrate di seguito.
Il deployment di MakeMyTrip dimostra che RTM su Spark offre la latenza estremamente bassa richiesta dalle tue applicazioni in tempo reale. Poiché RTM è basato sugli stessi familiari API Spark, puoi usare la stessa logica di business sia per pipeline batch che in tempo reale. Non avrai più bisogno di mantenere una seconda piattaforma o un codebase separato per l'elaborazione in tempo reale, ma potrai semplicemente abilitare RTM su Spark con una singola riga di codice.
La modalità in tempo reale ci ha permesso di comprimere la nostra infrastruttura e offrire esperienze in tempo reale senza gestire più motori di streaming. Mentre ci muoviamo nell'era degli agenti AI, guidarli efficacemente richiede la costruzione di un contesto in tempo reale da flussi di dati. Stiamo sperimentando con Spark RTM per fornire ai nostri agenti il contesto più ricco e recente necessario per prendere le migliori decisioni possibili. — Aditya Kumar, Associate Director of Engineering, MakeMyTrip
Per saperne di più sulla modalità in tempo reale, guarda questo video on-demand su come iniziare o consulta la documentazione.
(Questo post sul blog è stato tradotto utilizzando strumenti basati sull'intelligenza artificiale) Post originale
