Cada milisegundo cuenta cuando los viajeros buscan hoteles, vuelos o experiencias. Como la agencia de viajes en línea más grande de la India, MakeMyTrip compite en velocidad y relevancia en tiempo real. Una de sus características más importantes son los hoteles "últimamente buscados": a medida que los usuarios tocan la barra de búsqueda, esperan una lista personalizada en tiempo real de sus intereses recientes, basada en su interacción con el sistema.
A la escala de MakeMyTrip, ofrecer esa experiencia requiere una latencia inferior a un segundo en un pipeline de producción que atiende a millones de usuarios diarios, tanto en las líneas de negocio de viajes de consumo como corporativas. Al implementar el Modo en Tiempo Real (RTM) de Databricks, el motor de ejecución de próxima generación en Apache Spark™ Structured Streaming, MakeMyTrip logró con éxito latencias a nivel de milisegundos, al tiempo que mantenía una infraestructura rentable y reducía la complejidad de la ingeniería.
El equipo de datos de MakeMyTrip necesitaba una latencia inferior a un segundo para el flujo de trabajo de hoteles "últimamente buscados" en todas las líneas de negocio. A su escala, incluso unos pocos cientos de milisegundos de retraso crean fricción en el viaje del usuario, lo que impacta directamente en las tasas de clics.
El modo de micro-lotes de Apache Spark introdujo límites de latencia inherentes que el equipo no pudo superar a pesar de una extensa optimización, entregando consistentemente una latencia de uno a dos segundos, demasiado lenta para sus requisitos.
A continuación, evaluaron Apache Flink en aproximadamente 10 pipelines de streaming que resolvieron sus requisitos de latencia. Sin embargo, la adopción de Apache Flink como segundo motor habría introducido desafíos significativos a largo plazo:
Dado que MakeMyTrip nunca quiso una arquitectura de doble motor, Apache Flink no era una opción viable a largo plazo. El equipo tomó una decisión arquitectónica deliberada: esperar a que Apache Spark fuera más rápido, en lugar de fragmentar la pila. Por lo tanto, cuando Apache Spark Structured Streaming introdujo RTM, MakeMyTrip se convirtió en el primer cliente en adoptarlo. RTM les permitió lograr latencia a nivel de milisegundos en Apache Spark, cumpliendo los requisitos en tiempo real sin introducir otro motor ni dividir la plataforma.
Mantener dos motores significa duplicar la complejidad y el riesgo de deriva lógica entre los cálculos por lotes y en tiempo real. Queríamos una única fuente de verdad, un pipeline basado en Spark, en lugar de dos motores que mantener. El Modo en Tiempo Real nos dio el rendimiento que necesitábamos con la simplicidad que queríamos." — Aditya Kumar, Director Asociado de Ingeniería, MakeMyTrip
RTM ofrece procesamiento continuo de baja latencia a través de tres innovaciones técnicas clave que trabajan juntas para eliminar las fuentes de latencia inherentes a la ejecución de micro-lotes:
En conjunto, estas innovaciones permiten a Apache Spark lograr pipelines a escala de milisegundos que antes solo eran posibles con motores especializados. Para obtener más información sobre la base técnica de RTM, lea esta entrada de blog, "Rompiendo la Barrera de Micro-lotes: La Arquitectura del Modo en Tiempo Real de Apache Spark."

El pipeline de MakeMyTrip sigue una ruta de alto rendimiento:
Usar RTM en su consulta de streaming no requiere reescribir la lógica de negocio ni reestructurar los pipelines. El único cambio de código necesario es establecer el tipo de disparador en RealTimeTrigger, como se muestra en el siguiente fragmento de código:
La única consideración de infraestructura: las ranuras de tareas del clúster deben ser mayores o iguales al número total de tareas activas en las etapas de origen y shuffle. El equipo de MakeMyTrip analizó sus particiones de Kafka, particiones de shuffle y la complejidad del pipeline de antemano para garantizar una concurrencia suficiente antes de pasar a producción.
Como primer adoptante de RTM, MakeMyTrip trabajó directamente con la ingeniería de Databricks para llevar el pipeline a la preparación para producción. Varias capacidades requirieron colaboración activa entre los dos equipos para construir, optimizar y validar.
RTM permitió la personalización instantánea y mejoró la capacidad de respuesta, una mayor participación medida a través de las tasas de clics y la simplicidad operativa de un único motor unificado. Las métricas clave se muestran a continuación.
La implementación de MakeMyTrip demuestra que RTM en Spark ofrece la latencia extremadamente baja que requieren tus aplicaciones en tiempo real. Dado que RTM se basa en las mismas API de Spark que ya conoces, puedes usar la misma lógica de negocio en pipelines batch y en tiempo real. Ya no necesitas el sobrecoste de mantener una segunda plataforma o un codebase separado para el procesamiento en tiempo real, y puedes habilitar RTM en Spark con una sola línea de código.
El Modo en Tiempo Real nos permitió comprimir nuestra infraestructura y ofrecer experiencias en tiempo real sin gestionar múltiples motores de streaming. A medida que avanzamos hacia la era de los agentes de IA, dirigirlos eficazmente requiere construir contexto en tiempo real a partir de flujos de datos. Estamos experimentando con Spark RTM para proporcionar a nuestros agentes el contexto más rico y reciente necesario para tomar las mejores decisiones posibles. — Aditya Kumar, Director Asociado de Ingeniería, MakeMyTrip
Para obtener más información sobre el Modo en Tiempo Real, mira este vídeo bajo demanda sobre cómo empezar o revisa la documentación.
(Esta entrada del blog ha sido traducida utilizando herramientas basadas en inteligencia artificial) Publicación original
