Architettura di Booking.com

Architettura di Booking.com . Servendo milioni di utenti in tutto il mondo, Booking.com ha un’architettura di sistema dinamica per soddisfare le aspettative dei clienti in continua evoluzione e integrare le innovazioni tecnologiche. Partendo dai requisiti di sistema di Booking.com, lo scopo di questo articolo è discutere come è stata progettata la piattaforma e come funzionano i suoi componenti principali.

Come altre aziende leader del settore, Booking.com ha bisogno di architetture complesse e scalabili per migliorare continuamente l’esperienza degli utenti, aumentare l’efficienza e mantenere un vantaggio competitivo sul mercato. In questo articolo cercheremo di comprendere i processi tecnologici alla base di una piattaforma di questo tipo e proporremo un’architettura di base di alto livello. Che siate sviluppatori di software, ingegneri di sistema o semplicemente persone esperte di tecnologia, lo scopo di questo è di comprendere meglio la struttura tecnologica di Booking.com.

Requisiti di sistema Architettura di Booking.com

L’architettura di sistema di Booking.com è stata realizzata per soddisfare le ampie esigenze della sua piattaforma. Nel 2019, la piattaforma gestiva oltre 1.500.000 di esperienze prenotate ogni 24 ore . Questo immenso livello di traffico indica la necessità di un’infrastruttura server ad alta capacità e resilienza, in grado di gestire in modo efficiente grandi volumi di dati e interazioni con gli utenti, soprattutto durante i periodi di picco di utilizzo (l’estate o nei giorni di festa).

Inoltre, l’ampia base di utenti della piattaforma, in particolare i 100 milioni di utenti mobili previsti per il 2022, presenta sfide e opportunità significative. Questo numero consistente di utenti implica che la piattaforma ha a che fare con enormi volumi di dati e traffico intenso sui suoi server. Per gestirlo efficacemente, l’architettura del sistema deve essere robusta e scalabile, in modo da poter gestire le richieste simultanee e le esigenze di elaborazione dei dati di questa base di utenti così ampia e attiva.

Il possibile diagramma di architettura di alto livello che vedete qui sopra è un riassunto visivo dell’architettura dei servizi di Booking.com. Per comprendere meglio il ruolo e la funzionalità di ciascun componente all’interno del sistema, esamineremo di seguito i singoli componenti chiave del diagramma.

Schema architettonico
Una decisione cruciale nell’architettura di alto livello di Booking.com è la scelta di un modello architettonico in grado di gestire efficacemente il carico vario e dinamico della piattaforma tra i diversi servizi. Data la diversità dei carichi dei servizi, come la maggiore frequenza di utenti che navigano alla ricerca di hotel rispetto al numero di utenti che effettuano prenotazioni, è chiaro che un approccio unico alla scalabilità non è adatto alle esigenze di Booking.com.
Il modello di architettura a microservizi emerge come la soluzione più adatta a questo scenario. Questo modello struttura l’applicazione come un insieme di servizi non accoppiati tra loro, ciascuno progettato intorno a una specifica funzionalità aziendale. Questa scelta architetturale consente di aumentare o diminuire il volume dei singoli servizi in base alla domanda, senza impattare su altre aree del sistema.

Database
Nell’architettura di Booking.com, la scelta di un database relazionale è strategica, dettata dal modello operativo della piattaforma, in cui il volume delle ricerche di hotel supera notevolmente il numero di prenotazioni effettivamente effettuate. L’efficienza dei database relazionali nelle operazioni di lettura si allinea perfettamente con l’elevato numero di ricerche che la piattaforma ospita. Inoltre, l’integrità delle transazioni è fondamentale in un sistema di prenotazione, dove le proprietà ACID dei database relazionali svolgono un ruolo cruciale. Il modello relazionale gestisce abilmente anche le complesse interrelazioni tra i dati di Booking.com, come le connessioni tra hotel, camere e tipi di camere, migliorando l’integrità dei dati e semplificando la manutenzione.

I blog tecnologici dell’azienda suggeriscono che MySQL è il database relazionale scelto, in quanto offre le caratteristiche, le prestazioni e l’affidabilità necessarie. L’uso di MySQL è discusso in molti articoli dei blog tecnici di Booking.com. I lettori che desiderano ottenere maggiori informazioni e approfondimenti su questo argomento possono accedere al blog tecnico della piattaforma tramite il link che trovate a fine articolo.

Memorizzazione delle immagini
L’archiviazione e la distribuzione delle immagini mirano ad accelerare l’esperienza dell’utente e ad aumentare l’efficienza. La piattaforma utilizza la tecnologia CDN (Content Delivery Network) per fornire agli utenti un accesso rapido alle immagini degli hotel. L’uso di CDN consente di fornire contenuti ad alta velocità agli utenti di tutto il mondo, servendo le immagini degli hotel da server geograficamente più vicini. Il sistema memorizza gli URL delle immagini nel database.

Gateway API
Il gateway API funge da primo punto di ricezione di tutte le richieste API in arrivo, esegue l’autenticazione e le indirizza ai microservizi appropriati. Contiene anche limitatori di velocità che proteggono il sistema dal sovraccarico. Questa struttura centralizzata gestisce efficacemente il traffico sul sistema e fornisce un’esperienza utente sicura, controllando l’accesso in base alle autorizzazioni degli utenti.

Microservizi principali
Nell’architettura reale del sistema di Booking.com, potrebbero esserci più microservizi di quelli elencati qui, oppure uno dei microservizi elencati potrebbe in realtà essere suddiviso in diversi microservizi. Di seguito sono riportati quelli che vengono descritti come microservizi principali e di base, ma questo potrebbe non rappresentare l’elenco completo ed esaustivo dei servizi di Booking.com.

Servizio Hotel: Questo servizio gestisce le ricerche alberghiere degli utenti e include informazioni dettagliate, foto e disponibilità degli hotel. Il servizio dispone di un proprio database in cui sono conservati i dati, le proprietà e lo stato attuale degli hotel. Inoltre, informazioni come la posizione dell’hotel, i tipi di camera e i servizi disponibili cambiano raramente, quindi è opportuno memorizzare queste informazioni nella cache per garantire un’elevata velocità di accesso ed efficienza.

Servizio recensioni: Il servizio recensioni gestisce i commenti e le valutazioni che gli utenti scrivono sugli hotel. Booking.com ritiene che i sistemi di recensioni siano fondamentali per l’esperienza degli utenti e la qualità del servizio, per questo motivo attribuisce grande importanza ai sistemi di recensioni della piattaforma. Per saperne di più sul funzionamento dei sistemi di recensione di Booking.com e sui dettagli tecnici di questi processi, consultare il sito booking.com.

Servizio di pagamento: Questo servizio elabora le informazioni di pagamento, la cronologia delle transazioni e i dati di fatturazione, consentendo agli utenti di effettuare pagamenti in modo sicuro.

Servizio prenotazioni: Questo servizio gestisce le prenotazioni degli utenti e le mappa con gli hotel. Ha un proprio database che contiene i dettagli della prenotazione, lo stato della prenotazione degli utenti e la cronologia delle modifiche. Comunica inoltre con il servizio di pagamento, il servizio di revisione e il servizio alberghiero. Ad esempio, quando un utente richiede una prenotazione, chiama il servizio di pagamento e attende un messaggio di successo per completare la prenotazione. Se il pagamento va a buon fine, invia una richiesta al servizio alberghiero per effettuare gli aggiornamenti necessari sullo stato dell’hotel.

Servizio di ricerca: Gestisce tutte le ricerche effettuate dagli utenti sulla piattaforma. Quando gli utenti cercano un alloggio, questo servizio elabora le richieste utilizzando ElasticSearch.

Servizio di gestione delle prenotazioni: Serve ai proprietari di hotel per visualizzare e tenere traccia delle prenotazioni effettuate dagli utenti, aggiornare la disponibilità delle camere e gestire i dettagli della prenotazione. Pertanto, comunica con i servizi di prenotazione, pagamento e ostello.

Oltre a questi microservizi principali, l’architettura di Booking.com può includere anche servizi aggiuntivi che analizzano il comportamento degli utenti e alimentano una pipeline di Machine Learning in costante evoluzione utilizzando i dati delle prenotazioni. Tali servizi consentono alla piattaforma di personalizzare l’esperienza dell’utente e di migliorare continuamente la qualità del servizio.

Componenti di terze parti
Elastic Search: ElasticSearch è noto per la sua capacità di indicizzare e interrogare grandi insiemi di dati in modo rapido ed efficiente, consentendo al servizio di ricerca di filtrare e presentare rapidamente agli utenti un’ampia e diversificata gamma di opzioni di alloggio.

Kafka: Kafka utilizza dei connettori, soprattutto per operazioni come l’estrazione di dati da MySQL e l’alimentazione di dati a Elasticsearch. Ciò consente a diversi servizi del sistema, ad esempio il Search Service, di accedere a dati aggiornati e indicizzati. I dati provenienti da MySQL vengono immessi in Elasticsearch attraverso Kafka, che consente di elaborare e interrogare i dati in modo rapido ed efficiente. Il processo che segue avviene tra i cluster MySQL per Hotel, Kafka ed ElasticSearch.

Comunicazione tra microservizi
Approfondiamo la sofisticata architettura che consente a Booking.com di gestire in modo efficiente la sua complessa rete di servizi. L’architettura è suddivisa in due componenti principali: il piano di controllo e il piano dati, ciascuno con un ruolo distinto nella funzionalità complessiva del sistema.

Il piano di controllo funge da cervello dell’operazione. È responsabile della gestione di alto livello dell’instradamento del traffico, dell’applicazione dei criteri e della scoperta dei servizi. Strumenti come ZooKeeper e Kubernetes svolgono un ruolo fondamentale in questo piano. ZooKeeper, noto per le sue capacità di coordinamento e di gestione della configurazione, lavora insieme a Kubernetes, che eccelle nell’orchestrazione di applicazioni containerizzate. Insieme, assicurano che i servizi all’interno dell’ecosistema di Booking.com possano scoprirsi a vicenda e operare in modo coeso secondo le regole e le configurazioni stabilite dagli operatori.

Dall’altro lato, il piano dati è il luogo in cui avviene l’azione: i pacchetti di dati fluiscono tra i servizi attraverso questo piano. È popolato da proxy leggeri e ad alte prestazioni come Envoy, che hanno il compito di gestire direttamente le richieste e le risposte. Questi proxy sono configurati dinamicamente dal piano di controllo per applicare regole di instradamento specifiche, gestire i tentativi di risposta, i timeout e implementare misure di sicurezza come la crittografia SSL/TLS per il traffico HTTPS.

Gestione globale delle richieste
Booking.com utilizza un ADN (Application Delivery Network) basato su HAProxy per gestire in modo efficiente le richieste degli utenti. HAProxy agisce come bilanciatore di carico e server proxy ad alte prestazioni, instradando automaticamente le richieste degli utenti verso il server più appropriato. HAProxy gestisce dinamicamente il flusso di traffico sulla rete ed elabora le richieste degli utenti tenendo conto di vari fattori, come la posizione geografica, lo stato di salute e il carico dei server.

Le richieste degli utenti vengono instradate da HAProxy verso il centro dati più appropriato. Questo instradamento è ottimizzato per garantire la minore latenza e la massima qualità del servizio.

.

Conclusioni
In conclusione, abbiamo esaminato l’architettura di alto livello di Booking.com e i suoi microservizi principali, la sua rete globale di distribuzione delle applicazioni e il modo in cui i suoi componenti lavorano insieme. Come per ogni revisione tecnologica, è importante ricordare che le informazioni presentate in questa sede potrebbero non essere complete ed esaustive e potrebbero cambiare nel tempo. Potete seguire il blog tecnologico di Booking.com per conoscere le ultime novità. Ci auguriamo che questo articolo abbia aiutato ad approfondire le conoscenze della struttura tecnologica di Booking.com e fornito spunti per la progettazione di piattaforme con funzionalità similari.

(fonte)

Innovaformazione, scuola informatica specialistica promuove la formazione dei sviluppatori e delle architetture a microservizi. L’offerta formativa principalmente rivolta alle aziende, presenta molti corsi fra cui quelli per l’area “microservices” presenti in elenco QUI.

Vuoi essere ricontattato? Lasciaci il tuo numero telefonico e la tua email, ti richiameremo nelle 24h:

    Ti potrebbe interessare

    Articoli correlati