Il sistema di ranking di Booking

L’ingegneria dietro una piattaforma di ranking ad alte prestazioni: una panoramica del sistema

Introduzione
Booking.com utilizza un sofisticato sistema di ranking per ottimizzare i risultati di ricerca per ciascun utente. Il sistema impiega algoritmi avanzati di machine learning e sfrutta un’enorme quantità di dati, inclusi il comportamento degli utenti, le preferenze e le interazioni passate, per personalizzare l’elenco delle strutture e i suggerimenti di viaggio.

In questo articolo, daremo uno sguardo all’architettura della piattaforma di Ranking che supporta la personalizzazione del ranking in diversi ambiti (sistemazioni, voli, ecc.).

Panoramica dell’ecosistema
Un flusso di ricerca tipico si sviluppa come segue: l’utente avvia una richiesta dal proprio dispositivo o browser, che attraversa diversi sistemi front-end, inclusi micro-frontend e gateway, fino a raggiungere l’orchestratore della ricerca. Il motore di ricerca principale gestisce poi l’elaborazione, generando un elenco di strutture per la pagina dei risultati e per le mappe. Questo processo interagisce con un motore di ricerca per la disponibilità, che traccia la disponibilità di decine di milioni di strutture su Booking.com nel tempo. A causa della mole di dati, il motore è suddiviso in shard per gestire efficientemente le query. Un coordinatore distribuisce il carico e aggrega i risultati all’interno del sistema di disponibilità.

La piattaforma di Ranking si colloca dietro il motore di disponibilità e utilizza modelli ML per assegnare punteggi alle strutture che soddisfano i criteri di ricerca.

Panoramica dell’ecosistema ML (machine learning)
I dati vengono raccolti da fonti disparate (tabelle OLTP, flussi Kafka, ecc.) e archiviati in un data warehouse. Booking lavora su questi dati per esplorarli, pre-processarli, creare feature e selezionare algoritmi per l’addestramento dei modelli. I dati statici vengono calcolati una volta sola e non cambiano durante l’addestramento. Tuttavia, devono essere aggiornate regolarmente (giornalmente, settimanalmente o mensilmente). Esempi: posizione dell’alloggio, servizi offerti, tipi di stanza.

I dati dinamici invece vengono aggiornati rapidamente con l’arrivo di nuovi dati. Esempi: prezzi attuali e disponibilità delle stanze.


Ecosistema di Ranking
Nel caso delle sistemazioni, ordinare milioni di strutture per un gran numero di utenti rappresenta una sfida tecnica significativa, che richiede algoritmi sofisticati e potenza computazionale elevata. Il sistema deve elaborare molte variabili (preferenze, comportamento passato, attributi delle strutture, dati in tempo reale come prezzi e disponibilità) per fornire raccomandazioni personalizzate in pochi millisecondi.

Il motore di disponibilità interagisce due volte con la piattaforma di Ranking:

  1. Dai worker shard per assegnare punteggi alle strutture recuperate.

  2. Dal coordinatore, dopo l’aggregazione, per un eventuale riordino finale.

La piattaforma ha servizi dedicati per ciascun ambito (sistemazioni, voli, raccomandazioni, ecc.). Inoltre, la piattaforma fa ampio uso di sperimentazione continua (interleaving e A/B testing) per ottimizzare i risultati di ricerca.


Sfide tecniche di Booking

  • Percorso critico
    Il sistema deve rispondere in meno di un secondo al 99.9° percentile (p999), richiedendo ottimizzazioni pesanti dei modelli.

  • Problema di fan-out
    Poiché il ranking è dietro agli shard, il numero di chiamate API viene moltiplicato per il numero di worker. Se l’orchestratore riceve K richieste al secondo e ci sono N worker, il servizio di ranking deve gestire N * K richieste/sec.

  • Dimensioni dei payload variabili
    Il numero di strutture da classificare varia (da decine a migliaia), a seconda della densità e dell’area di ricerca. Per gestirlo, il servizio spezza i dati in blocchi gestibili. Questo garantisce una latenza costante ma comporta complessità aggiuntive (chiamate parallele, memory leak, garbage collection, carico sul sistema ML).


Conclusione
La piattaforma di Ranking ha un ruolo fondamentale nell’architettura di ricerca di Booking.com. Utilizza modelli ML sofisticati per fornire risultati personalizzati, rispondendo alle aspettative degli utenti. Con l’evoluzione della tecnologia, la piattaforma resta all’avanguardia nell’offrire raccomandazioni rilevanti e tempestive a milioni di utenti in tutto il mondo.

Condividi su:

Facebook
Twitter
LinkedIn