See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale TripAdvisor mencoba untuk mengevaluasi ini segera setelah Anda berinteraksi dengan situs, kemudian menawarkan Anda informasi yang semakin relevan pada setiap klik – dalam beberapa milisekunder. personalisasi ini didukung oleh model ML canggih yang bertindak pada data yang disimpan pada ScyllaDB yang berjalan di AWS. Dalam artikel ini, Dean Poulin (Tripadvisor Data Engineering Lead pada tim Layanan dan Produk AI) memberikan gambaran tentang bagaimana mereka memungkinkan personalisasi ini. Ini didasarkan pada AWS re:Invent talk berikut: Orientasi Pre-Trip Dalam kata-kata Dean ... Didirikan pada tahun 2000, TripAdvisor telah menjadi pemimpin global dalam perjalanan dan perhotelan, membantu ratusan juta wisatawan merencanakan perjalanan mereka yang sempurna. TripAdvisor menghasilkan lebih dari $ 1,8 miliar dalam pendapatan dan merupakan perusahaan yang diperdagangkan secara publik di bursa NASDAQ. Hari ini, kami memiliki tim berbakat dengan lebih dari 2.800 karyawan yang mendorong inovasi, dan platform kami melayani 400 juta pengunjung unik per bulan – jumlah yang terus tumbuh. Pada setiap hari, sistem kami menangani lebih dari 2 miliar permintaan dari 25 hingga 50 juta pengguna. Setiap klik yang Anda buat di TripAdvisor diproses secara real-time. Di balik itu, kami memanfaatkan model pembelajaran mesin untuk memberikan rekomendasi yang dipersonalisasi – membuat Anda lebih dekat dengan perjalanan yang sempurna. Di jantung mesin personalisasi ini adalah ScyllaDB yang berjalan di AWS. Ini memungkinkan kami untuk memberikan latensi milisekund pada skala yang hanya bisa dicapai oleh beberapa organisasi. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds Saya akan membagikan bagaimana TripAdvisor memanfaatkan kekuatan ScyllaDB, AWS, dan pembelajaran mesin real-time untuk memberikan rekomendasi yang dipersonalisasi untuk setiap pengguna. kami akan mengeksplorasi bagaimana kami membantu wisatawan menemukan semua yang mereka butuhkan untuk merencanakan perjalanan mereka yang sempurna: apakah itu menemukan permata tersembunyi, atraksi yang harus dilihat, pengalaman yang tak terlupakan, atau tempat terbaik untuk tinggal dan makan malam. [artikel] ini adalah tentang teknik di balik itu – bagaimana kami memberikan konten yang lancar dan relevan kepada pengguna dalam waktu nyata, membantu mereka menemukan persis apa yang mereka cari secepat mungkin. Perencanaan Perjalanan Pribadi Segera setelah Anda mendarat di homepage TripAdvisor, TripAdvisor sudah tahu apakah Anda seorang foodie, pengembara, atau pecinta pantai – dan Anda melihat rekomendasi spot-on yang tampaknya dipersonalisasi untuk minat Anda sendiri. Saat Anda menjelajahi TripAdvisor, kami mulai mempersonalisasi apa yang Anda lihat menggunakan model Machine Learning yang menghitung skor berdasarkan aktivitas browsing Anda saat ini dan sebelumnya. Kami merekomendasikan hotel dan pengalaman yang menurut kami akan menarik minat Anda. Kami mengatur hotel berdasarkan preferensi pribadi Anda. Kami merekomendasikan tempat-tempat menarik populer di dekat hotel yang Anda lihat. Semua ini disesuaikan berdasarkan preferensi pribadi Anda dan aktivitas browsing sebelumnya. Model Tripadvisor yang Melayani Arsitektur Tripadvisor berjalan pada ratusan microservices yang dapat diperluas secara independen di Kubernetes on-prem dan di Amazon EKS. Platform ML Model Serving kami ditampilkan melalui salah satu microservices ini. Layanan gateway ini mengekstrak lebih dari 100 Model ML dari Layanan Pelanggan – yang memungkinkan kami menjalankan tes A / B untuk menemukan model terbaik menggunakan platform eksperimen kami. Model ML terutama dikembangkan oleh Ilmuwan Data dan Insinyur Machine Learning kami menggunakan Jupyter Notebooks di Kubeflow. Mereka dikelola dan dilatih menggunakan ML Flow, dan kami mendistribusikannya di Seldon Core di Kubernetes. Toko Fitur Kustom kami menyediakan fitur untuk Model ML kami, memungkinkan mereka membuat prediksi yang akurat. Spesifikasi Custom Store Fitur Store terutama melayani Fitur Pengguna dan Fitur Statik. Fitur Statik disimpan di Redis karena mereka tidak berubah sangat sering. Kami menjalankan saluran data setiap hari untuk mengunggah data dari gudang data offline kami ke Fitur Store kami sebagai Fitur Statik. Fitur pengguna dilayani secara real-time melalui platform yang disebut Visitor Platform. kami melakukan kueri CQL dinamis terhadap ScyllaDB, dan . we do not need a caching layer because ScyllaDB is so fast Toko Fitur kami melayani hingga 5 juta Fitur Statik per detik dan setengah juta Fitur Pengguna per detik. Apa itu ML Feature? Fitur adalah variabel input untuk Model ML yang digunakan untuk membuat prediksi. Beberapa contoh Fitur Static adalah penghargaan yang telah memenangkan restoran atau fasilitas yang ditawarkan oleh hotel (seperti Wi-Fi gratis, ramah hewan peliharaan atau pusat kebugaran). Fitur pengguna dikumpulkan secara real-time saat pengguna menjelajahi situs. Kami menyimpannya di ScyllaDB sehingga kami dapat mendapatkan kueri cepat kilat. Beberapa contoh fitur pengguna adalah hotel yang dilihat dalam 30 menit terakhir, restoran yang dilihat dalam 24 jam terakhir, atau ulasan yang dikirim dalam 30 hari terakhir. Teknologi yang Mendukung Platform Pengunjung ScyllaDB adalah inti dari Visitor Platform. Kami menggunakan microservices Spring Boot berbasis Java untuk mengekspos platform ke klien kami. Ini didistribusikan di AWS ECS Fargate. Kami menjalankan Apache Spark di Kubernetes untuk pekerjaan retensi data harian kami, pekerjaan offline kami ke pekerjaan online. Kemudian kami menggunakan pekerjaan itu untuk mengunggah data dari gudang data offline kami ke ScyllaDB sehingga mereka tersedia di situs langsung. Kami juga menggunakan Amazon Kinesis untuk memproses peristiwa pelacakan pengguna streaming. Platform Pengunjung Data Flow Grafik berikut menunjukkan bagaimana data mengalir melalui platform kami dalam empat tahap: menghasilkan, menyerap, mengatur, dan mengaktifkan. Data yang dihasilkan oleh situs web kami dan aplikasi seluler kami. beberapa data tersebut termasuk Cross-Device User Identity Graph, Peristiwa Pelacakan Perilaku (seperti tampilan halaman dan klik) dan peristiwa streaming yang melalui Kinesis. Microservices Visitor Platform digunakan untuk menyerap dan mengatur data ini. data di ScyllaDB disimpan dalam dua ruang kunci: Keyspace Visitor Core, yang berisi Visitor Identity Graph Ruang Kunci Metrik Pengunjung, yang berisi Fakta dan Metrik (hal-hal yang dilakukan orang saat mereka menjelajahi situs) Kami menggunakan proses ETL sehari-hari untuk mempertahankan dan membersihkan data di platform. kami memproduksi Data Products, dicetak setiap hari, di gudang data offline kami – di mana mereka tersedia untuk integrasi lain dan pipa data lainnya untuk digunakan dalam pemrosesan mereka. Berikut ini adalah pandangan Platform Pengunjung berdasarkan angka: Mengapa dua database? Kami menggunakan TTL jangka pendek untuk mencegah data dalam database online tumbuh tanpa batas, dan pekerjaan retensi data kami memastikan bahwa kami hanya menyimpan data aktivitas pengguna untuk pengunjung nyata. TripAdvisor.com mendapatkan banyak lalu lintas bot, dan kami tidak ingin menyimpan data mereka dan mencoba untuk mempersonalisasi bot - jadi kami menghapus dan membersihkan semua data itu. Penyimpanan data offline kami menyimpan data historis yang digunakan untuk melaporkan, membuat produk data lainnya, dan melatih Model ML kami. kami tidak ingin proses data offline skala besar mempengaruhi kinerja situs langsung kami, jadi kami memiliki dua database terpisah yang digunakan untuk dua tujuan yang berbeda. Platform Pengunjung Microservices Kami menggunakan 5 microservices untuk Platform Pengunjung: Visitor Core mengelola grafik identitas pengguna lintas perangkat berdasarkan cookie dan ID perangkat. Visitor Metric adalah mesin kueri kami, dan yang memberi kami kemampuan untuk mengekspos fakta dan metrik untuk pengunjung tertentu. kami menggunakan bahasa spesifik domain yang disebut bahasa kueri pengunjung, atau VQL. contoh VQL ini memungkinkan Anda untuk melihat fakta klik perdagangan terbaru selama tiga jam terakhir. Visitor Publisher dan Visitor Saver menangani jalan menulis, menulis data ke platform. Selain menyimpan data di ScyllaDB, kami juga streaming data ke gudang data offline. Visitor Composite menyederhanakan publikasi data dalam pekerjaan pengolahan batch. ia mengabstrak Visitor Saver dan Visitor Core untuk mengidentifikasi pengunjung dan menerbitkan fakta dan metrik dalam panggilan API tunggal. Roundtrip Latency untuk Microservice Grafik ini menunjukkan bagaimana latensi microservice kami tetap stabil dari waktu ke waktu. Latensi rata-rata hanya 2,5 milisekunder, dan P999 kami kurang dari 12,5 milisekunder. Ini adalah kinerja yang mengesankan, terutama mengingat bahwa kami menangani lebih dari 1 miliar permintaan per hari. Klien microservice kami memiliki persyaratan latensi yang ketat. 95% dari panggilan harus selesai dalam 12 milisekunder atau kurang. Latensi ScyllaDB Berikut ini adalah hasil ScyllaDB selama tiga hari. Pada puncaknya, ScyllaDB menangani 340.000 operasi per detik (termasuk menulis dan membaca dan menghapus) dan CPU bergejolak hanya 21%. ScyllaDB memberikan microsecond menulis dan millisecond membaca untuk kami. tingkat kinerja yang sangat cepat ini adalah alasan mengapa kami memilih ScyllaDB. Memindahkan data ke ScyllaDB Gambar ini menunjukkan bagaimana kita memisahkan data ke ScyllaDB. Visitor Metric Keyspace memiliki dua tabel: Fact dan Raw Metrics. Kunci utama pada tabel Fact adalah Visitor GUID, Fact Type, dan Created At Date. Kunci partisi komposit adalah Visitor GUID dan Fact Type. Kunci cluster adalah Created At Date, yang memungkinkan kita untuk mengatur data dalam partisi berdasarkan tanggal. Kolom atribut berisi sebuah objek JSON yang mewakili peristiwa yang terjadi di sana. Beberapa contoh Fakta adalah Search Terms, Page Views, dan Bookings. Kami menggunakan ScyllaDB Strategy Leveled Compaction karena: Dioptimalkan untuk pertanyaan range Ia menangani kardinalitas tinggi dengan sangat baik Lebih baik untuk beban kerja yang berat membaca, dan kita memiliki sekitar 2-3X lebih banyak membaca daripada menulis Mengapa ScyllaDB? Solusi kami awalnya dibangun menggunakan Cassandra on-prem. Tetapi seiring dengan meningkatnya skala, beban operasional juga meningkat. Hal ini membutuhkan dukungan operasi khusus agar kami dapat mengelola upgrade database, cadangan, dll. Juga, solusi kami membutuhkan latensi yang sangat rendah untuk komponen inti. Sistem Manajemen Identitas Pengguna kami harus mengidentifikasi pengguna dalam waktu 30 milisekunder – dan untuk personalisasi terbaik, kami memerlukan platform Event Tracking kami untuk merespon dalam waktu 40 milisekunder. Penting bahwa solusi kami tidak memblokir rendering halaman sehingga SLA kami sangat rendah. Dengan Cassandra, kami memiliki dampak pada kinerja dari pengumpulan sampah. Kami menjalankan Proof of Concept dengan ScyllaDB dan menemukan output jauh lebih baik daripada Cassandra dan beban operasional dihilangkan. Kami ingin opsi yang sepenuhnya dikelola, jadi kami bermigrasi dari Cassandra ke ScyllaDB Cloud, mengikuti strategi penulisan ganda. yang memungkinkan kami untuk bermigrasi dengan zero downtime sambil menangani 40.000 operasi atau permintaan per detik. Diagram ini menunjukkan bagaimana penyebaran BYOA ScyllaDB terlihat. Di tengah diagram, Anda dapat melihat cluster ScyllaDB 6 node yang berjalan pada EC2. ScyllaDB Monitor memberi kita dashboard Grafana serta metrik Prometheus. ScyllaDB Manager merawat otomatisasi infrastruktur seperti memicu backup dan perbaikan. Dengan penyebaran ini, ScyllaDB dapat ditempatkan bersama sangat dekat dengan microservices kami untuk memberi kita latensi yang lebih rendah serta tingkat aliran dan kinerja yang jauh lebih tinggi. Singkatnya, saya berharap Anda sekarang memiliki pemahaman yang lebih baik tentang arsitektur kami, teknologi yang mendukung platform, dan bagaimana ScyllaDB memainkan peran penting dalam memungkinkan kami untuk menangani skala yang sangat tinggi TripAdvisor. Spesifikasi Cynthia Dunlop Cynthia adalah Senior Director of Content Strategy di ScyllaDB. Dia telah menulis tentang pengembangan perangkat lunak dan teknik kualitas selama lebih dari 20 tahun.