See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Ang Tripadvisor ay nagtatrabaho upang i-evaluate ito kapag ikaw ay nagtatrabaho sa site, pagkatapos ay mag-aalok sa iyo ng mas mahalaga na impormasyon sa bawat pag-click - sa loob ng isang kwento ng miliseconds. Sa artikulong ito, ang Dean Poulin (Tripadvisor Data Engineering Lead sa team ng IA Service at Products) ay nagbibigay ng isang pag-aralan sa kung paano sila ay nagbibigay ng potensyal na personalization. Ito ay batay sa mga sumusunod na AWS re:Invent talk: Pre-Trip orientasyon Sa mga salita ni Dean... Nagsimula kami ng isang mabilis na snapshot ng kung sino ang Tripadvisor, at ang antas sa kung saan kami operate. Itinatag noong 2000, ang Tripadvisor ay naging isang global na lider sa paglipad at pag-hostilidad, na nag-aalok ng ratings ng milyon-milyong mamamayan upang mag-plano ang kanilang mga kamangha-kumpleto na paglipad. Tripadvisor ay gumagawa ng higit sa $1.8 bilyon ng mga revenue at ay isang publicly na-trade na kumpanya sa NASDAQ stock exchange. Ngayon, mayroong kami ng isang talented team ng higit sa 2,800 empleyado na nagdiriwang ng innovation, at ang aming platform ay nagbibigay ng isang mahigpit na 400 milyong unique mga bisita bawat buwan - isang bilangang na ay patuloy na lumaki. Sa anumang araw, ang aming sistema ay nagtatrabaho ng higit sa 2 bilyon na mga request mula sa 25 hanggang 50 milyong gumagamit. Ang bawat pag-click mo sa Tripadvisor ay nagtatrabaho sa real-time. Sa ilalim ng ito, ginagamit namin ang mga modelo ng machine learning upang magbigay ng personalized mga rekomendasyon - magbubuo ka sa mas malapit na paglalakbay. Sa katotohanan ng engine ng personalization na ito ay ang ScyllaDB na gumagana sa AWS. Ito ay nagbibigay sa amin upang magbigay ng milisecond-latency sa isang skala na may mga maliit na mga organisasyon. Sa peak traffic, tumakbo kami sa paligid . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds Magbigay ng inspirasyon sa kontemporaryong designer ay maaaring gumawa ng kahit ano, kahit ano, at ang New Year - ay walang exception. Personalized Trip Planning Imagine mo na ikaw ay nag-planning ng isang paglipad. Kapag bumalik ka sa homepage ng Tripadvisor, ang Tripadvisor ay nakakaalam kung ikaw ay isang foodie, isang adventurer, o isang beach lover - at ikaw ay nakikita ang mga spot-on na mga rekomendasyon na nakikita na personalized sa iyong mga interes. Kapag bumalik na ako sa Tripadvisor, nagsimula namin na i-personalize ang mga nakita mo gamit ang mga modelo ng Machine Learning na i-calculate ang mga score batay sa iyong kasalukuyang at nakaraang pag-browsing aktibidad. Nagrekomenda namin ang mga hotel at mga karanasan na alam namin na ikaw ay interesado sa. Nag-sort ang mga hotel batay sa iyong personal na mga pagpipilian. Nagrekomenda namin ang mga popular na mga punto ng interes malapit sa hotel na ikaw ay nag-view. Ang lahat ng mga ito ay tunog batay sa iyong personal na mga pagpipilian at nakaraang pag-browsing activity. Mga Modelo ng Tripadvisor na Nagtatrabaho sa Arkitektura Ang Tripadvisor ay gumagana sa pamamagitan ng hundreds of independently scalable microservices sa Kubernetes on-prem at sa Amazon EKS. Ang aming ML Model Serving Platform ay ipinakita sa pamamagitan ng isa sa mga microservices na ito. Ang serbisyo ng gateway na ito ay binubuo ng higit sa 100 ML Models mula sa Customer Services - na nagbibigay-daan sa amin upang i-execute ang A/B tests upang makakuha ng ang pinakamahusay na mga modelo gamit ang aming eksperimento platform. Ang ML Models ay binubuo sa pangunahing bahagi ng aming Data Scientists at Machine Learning Engineers gamit ang Jupyter Notebooks sa Kubeflow. Ang mga ito ay ginagamit at nagtrabaho gamit ang ML Flow, at kami ay nag-implementate ang mga ito sa Seldon Core sa Kubernetes. Ang aming Custom Feature Store ay nagbibigay ng mga tampok para sa aming ML Models, na nagbibigay-daan sa kanila upang gumawa ng aktibong mga prediction. Mga Custom Feature Store Ang Feature Store ay karaniwang nagbibigay ng User Features at Static Features. Ang Static Features ay ibinigay sa Redis dahil hindi nila mababago nang karaniwang. Kami ay gumagana ng data pipelines araw-araw upang i-load ang data mula sa aming offline data warehouse sa aming Feature Store bilang Static Features. Ang User Features ay ibinibigay sa real-time sa pamamagitan ng isang platform na tinatawag na Visitor Platform. I-execute ang dynamic CQL queries laban sa ScyllaDB, at . we do not need a caching layer because ScyllaDB is so fast Ang aming Feature Store ay nagbibigay ng hanggang sa 5 milyong Static Features per second at halos isang milyong User Features per second. Ano ang isang ML Feature? Ang mga feature ay mga input variables sa ML Models na ginagamit upang gumawa ng isang prediction. Ang ilang mga halimbawa ng Static Features ay mga award na nabawasan ng isang restaurant o mga kagamitan na ibinigay ng isang hotel (tulad ng libreng Wi-Fi, pet friendly o fitness center). Ang Mga Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Karaniwang Kar Mga Teknolohiya na Nagbibigay ng Power sa Visitor Platform Ang ScyllaDB ay ang core ng Visitor Platform. Ginagamit namin ang Java-based Spring Boot microservices upang i-expose ang platform sa aming mga kliyente. Ito ay i-deploy sa AWS ECS Fargate. I-run ang Apache Spark sa Kubernetes para sa aming araw-araw na mga trabaho sa pag-iisip ng data, ang aming offline sa online na mga trabaho. At pagkatapos ay ginagamit namin ang mga trabaho na ito upang i-load ang data mula sa aming offline data warehouse sa ScyllaDB upang magagamit ang mga data sa live site. Ang Data Flow ng Visitor Platform Ang mga sumusunod na graph ay nagpapakita kung paano ang data ay lumipas sa pamamagitan ng aming platform sa tatlong pangkat: lumikha, inilagay, organize, at i-activate. Ang data ay nilikha sa pamamagitan ng aming website at ang aming mga mobile apps. Karamihan ng data na ito ay kabilang ang aming Cross-Device User Identity Graph, Behavior Tracking events ( tulad ng pag-view at mga pag-click) at streaming events na lumabas sa pamamagitan ng Kinesis. Ang mga microservices ng Visitor Platform ay ginagamit upang i-inject at i-organize ang data na ito. Ang data sa ScyllaDB ay ibinigay sa dalawang keyspace: Ang Visitor Core keyspace, na naglalaman ng Visitor Identity Graph Ang Visitor Metric keyspace, na naglalaman ng Facts at Metrics (ang mga bagay na ginawa ng mga tao habang nag-surf ang site) Kami ay gumagamit ng araw-araw na mga proseso ng ETL upang matatagpuan at i-clear up ang data sa platform. Kami ay gumagawa ng Data Products, na-stamped araw-araw, sa aming offline data warehouse - kung saan ang mga ito ay magagamit para sa iba pang mga integrations at iba pang data pipelines upang gamitin sa kanilang pagproseso. Narito ang isang tingnan sa Visitor Platform sa pamamagitan ng mga numero: Bakit ang dalawang database? Ang aming online database ay nag-focused sa real-time, live website traffic. ScyllaDB naglalaman ang papel na ito sa pamamagitan ng nagbibigay ng napaka-low latencies at high throughput. Kami ay gumagamit ng short-term TTLs upang maiwasan ang data sa online database mula sa pag-unlad nang walang katapusan, at ang aming data retention mga trabaho ay nagbibigay-daan na kami lamang ng data ng aktibidad ng user para sa mga tunay na bisita. Tripadvisor.com ay makakuha ng maraming bot traffic, at kami ay hindi nais na i-storage ang kanilang data at handa upang personalize ang mga bots - kaya kami i-wash at i-clean ang lahat ng data na ito. Ang aming offline data warehouse ay naglalaman ng mga historikal na data na ginagamit para sa pag-report, lumikha ng iba pang mga produkto ng data, at pag-training ang aming ML Models. Hindi namin nais ang malaking offline data na proseso na nakakaapekto sa pagganap ng aming live site, kaya mayroong dalawang separang databases na ginagamit para sa dalawang iba't ibang mga layunin. Paglalarawan ng Microservices Kami ay gumagamit ng 5 microservices para sa Visitor Platform: Ang Visitor Core ay nagtatrabaho sa cross-device user identity graph batay sa cookies at device IDs. Ang Visitor Metric ay ang aming query engine, at ito ay nagbibigay-daan sa amin ng kakayahan upang i-expose mga katotohanan at mga metric para sa anumang mga bisita. gumagamit namin ang isang domain-specific na wika na tinatawag na visitor query language, o VQL. Ang halimbawa na ito ng VQL ay nagbibigay-daan sa iyo upang makita ang pinakabagong trade click facts sa loob ng nakaraang tatlong oras. Ang Visitor Publisher at ang Visitor Saver ay nagtatrabaho sa pag-script path, mag-script ng data sa platform. Bago sa pag-save ng data sa ScyllaDB, nag-streaming ang data sa offline data warehouse. Ito ay ginawa sa Amazon Kinesis. Ang Visitor Composite ay nagpapahintulot sa pag-publish ng data sa mga trabaho ng pagproseso ng batch. Itinuturing ang Visitor Saver at Visitor Core upang i-identify ang mga bisita at i-publish ang mga katotohanan at mga metric sa isang single API call. Pagkakaiba sa Microservice Latency Ang graph na ito ay nagpapakita kung paano ang aming microservice latencies ay matatagpuan sa panahon. Ang average na latency ay lamang 2.5 miliseconds, at ang aming P999 ay mas mababa sa 12.5 miliseconds. Ito ay impressive na pagganap, lalo na dahil nagtatrabaho kami ng higit sa 1 bilyong mga request sa isang araw. Ang aming mga kliyente ng microservice ay may karaniwang mga kinakailangan sa latency. 95% ng mga telepono ay kinakailangan upang bumuo sa 12 milliseconds o mas mababa. Kung sila ay bumaba sa ito, pagkatapos ay makakuha ng pag-page at kailangan natagpuan kung ano ang nakakaapekto sa mga latency. Pagkakaiba ng Latency Narito ang isang snapshot ng pagganap ng ScyllaDB sa loob ng tatlong araw. Sa peak, ang ScyllaDB ay nagtatrabaho ng 340,000 operations per second (kabilang sa mga writes at reads at deletes) at ang CPU ay naglalakbay sa lamang 21%. Ang ScyllaDB ay nagbibigay ng microsecond writes at millisecond reads para sa amin. Ang antas na ito ng mabigat na mabilis na pagganap ay eksaktong dahilan kung bakit pinili namin ang ScyllaDB. I-partition ang data sa ScyllaDB Ang imahe na ito ay nagpapakita kung paano natagpuan ang data sa ScyllaDB. Ang Visitor Metric Keyspace ay may dalawang tablo: Fact at Raw Metrics. Ang pangunahing key sa tablo ng Fact ay Visitor GUID, Fact Type, at Created At Date. Ang komposit na partition key ay ang Visitor GUID at Fact Type. Ang clustering key ay Created At Date, na nagbibigay-daan sa amin upang i-sort ang data sa partitions sa pamamagitan ng petsa. Ang mga atributes column ay naglalaman ng isang JSON object na nagpapakita ng event na natagpuan dito. Ang ilang mga halimbawa na Facts ay Search Terms, Page Views, at Bookings. Ginagamit namin ang ScyllaDB's Leveled Compaction Strategy dahil: Ito ay optimized para sa range queries Ito ay nagtatrabaho ng high cardinality Ito ay mas mahusay para sa mga workloads na mahalaga, at mayroong tungkol sa 2-3X higit pa ang mga read kaysa sa mga write Bakit ang ScyllaDB? Ang aming solusyon ay inihahanda na gumagamit ng Cassandra on-prem. Ngunit habang ang skala ay lumaki, ang operating load na ito ay kinakailangan. Ito ay nangangailangan ng dedicated operations support upang mag-manage ang database upgrades, backups, atbp Ngayon, ang aming solusyon ay nangangailangan ng napaka-low na mga latency para sa mga core components. Ang aming User Identity Management system ay dapat i-identify ang user sa loob ng 30 milliseconds - at para sa pinakamahusay na personalization, kailangan namin ang aming Event Tracking platform upang mag-react sa 40 milliseconds. Ito ay mahalaga na ang aming solusyon ay hindi mag-block ang rendering ng pahina kaya ang aming SLA ay napaka-low. Sa Cassandra, kami ay may mga epekto sa pagganap mula sa Nakatakda kami ng Proof of Concept na may ScyllaDB at natagpuan na ang paghahatid ay mas mahusay kaysa sa Cassandra at ang operating load ay na-eliminated. ScyllaDB ay nagbibigay sa amin ng isang monstrously mabilis na live serving database na may mga mas mababang posible na latencies. Kailangan namin ng isang napaka-managed na opsyon, kaya nag-migrate mula sa Cassandra sa ScyllaDB Cloud, sumusunod sa isang dual-writing strategy. Ito ay nagbibigay-daan sa amin na mag-migrate sa zero downtime habang nagtatrabaho ng 40,000 mga operasyon o mga request bawat segundo. Matapos, nag-migrate mula sa ScyllaDB Cloud sa ScyllaDB's "Bring Your Own Account" model, kung saan maaari mong mag-implementate ang ScyllaDB team ang ScyllaDB database sa iyong sarili AWS account. Ang diagram na ito ay nagpapakita kung ano ang BYOA deployment ng ScyllaDB. Sa sentro ng diagram, maaari mong makita ang isang 6-node ScyllaDB cluster na gumagana sa EC2. At pagkatapos ay mayroong dalawang karagdagang instances ng EC2. ScyllaDB Monitor ay nagbibigay sa amin Grafana dashboards pati na rin Prometheus metrics. Ang ScyllaDB Manager ay tumutulong sa infrastructure automation tulad ng pag-activate ng mga backup at mga repair. Sa pag-implementasyon na ito, ang ScyllaDB ay maaaring matatagpuan na malapit sa aming microservices upang magbibigay-daan sa amin ng mas mababang mga latens, pati na rin ang mas mataas na paghahatid at pagganap. Sa kabuuan, inaasahan ko na ngayon ay may mas mahusay na pahintulot sa aming arkitektura, ang mga teknolohiya na gumagamit ng platform, at kung paano ScyllaDB ay may isang kritikal na papel sa nagpapahintulot sa amin na magtatrabaho ng ultra-high-scale ng Tripadvisor. Tungkol sa Cynthia Dunlop Cynthia ay Senior Director ng Content Strategy sa ScyllaDB. Siya ay nag-script tungkol sa pag-unlad ng software at quality engineering para sa higit sa 20 taon.