See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Tripadvisor pokušava to procijeniti čim se uključite na stranicu, a zatim vam nudi sve relevantnije informacije na svakom kliku – u milisekundama. U ovom članku, Dean Poulin (Tripadvisor Data Engineering Lead na AI servisima i proizvodima tim) pruža pogled na to kako oni pokreću ovu personalizaciju. Dean dijeli ukus tehničkih izazova koji su uključeni u isporuku personaliziranja u realnom vremenu na ogromnoj (i brzo rastućoj) razini TripAdvisor-a. To se temelji na sljedećem AWS re:Invent govoru: Orijentacija prije putovanja Prema riječima Deana... Osnovan 2000. godine, TripAdvisor je postao globalni lider u području putovanja i gostoprimstva, pomažući stotinama milijuna putnika da planiraju savršena putovanja. TripAdvisor generira više od 1,8 milijardi dolara prihoda i javno je trgovačko društvo na burzi NASDAQ. Danas imamo talentirani tim od preko 2.800 zaposlenika koji pokreću inovacije, a naša platforma služi zapanjujućim 400 milijuna jedinstvenih posjetitelja mjesečno – broj koji stalno raste. U svakom danu, naš sustav obrađuje više od 2 milijarde zahtjeva od 25 do 50 milijuna korisnika. Svaki klik koji napravite na TripAdvisor se obrađuje u realnom vremenu. Iza toga, koristimo modele strojnog učenja kako bismo vam pružili personalizirane preporuke – što vas približava tom savršenom putovanju. U srcu ovog personaliziranog motora je ScyllaDB koji radi na AWS-u. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds Podijelit ćemo kako TripAdvisor iskoristi moć ScyllaDB-a, AWS-a i strojnog učenja u stvarnom vremenu kako bi pružio personalizirane preporuke za svakog korisnika.Istražit ćemo kako pomažemo putnicima da otkriju sve što im je potrebno kako bi planirali svoje savršeno putovanje: bilo da je riječ o otkrivanju skrivenih dragulja, atrakcija koje treba vidjeti, nezaboravnih iskustava ili najboljih mjesta za boravak i jelo. Personalizirano planiranje putovanja Čim stignete na domaću stranicu TripAdvisor-a, TripAdvisor već zna da li ste ljubitelj hrane, avanturista ili ljubitelj plaže – i vidite preporuke na licu mjesta koje izgledaju prilagođene vašim interesima. Dok pregledavate TripAdvisor, počinjemo personalizirati ono što vidite pomoću modela Machine Learning koji izračunavaju ocjene na temelju vaše trenutačne i prethodne aktivnosti pretraživanja. Preporučujemo hotele i iskustva u kojima mislimo da biste bili zainteresirani. Razvrstavamo hotele na temelju vaših osobnih preferencija. Preporučujemo popularne zanimljive točke u blizini hotela koji pretražujete. Sve su to prilagođene na temelju vaših osobnih preferencija i prethodne aktivnosti pretraživanja. Tripadvisorov model koji služi arhitekturi TripAdvisor radi na stotinama neovisno skalabilnih mikroslužbi u Kubernetes on-prem i u Amazon EKS. Naša ML Model Serving Platform je izložena kroz jednu od tih mikroslužbi. Ova usluga vrata izvlači više od 100 ML modela iz usluga klijenata – što nam omogućuje da pokrenemo A/B testove kako bismo pronašli najbolje modele pomoću naše eksperimentalne platforme. ML modele uglavnom razvijaju naši znanstvenici podataka i inženjeri za strojno učenje koristeći Jupyter Notebooks na Kubeflow. Oni su upravljani i obučeni pomoću ML Flow-a, a mi ih raspoređujemo na Seldon Core u Kubernetes. Custom Feature trgovina Trgovina značajkama prvenstveno služi korisničkim značajkama i statičkim značajkama. Statične značajke pohranjujemo u Redis-u jer se ne mijenjaju vrlo često. Dnevno upravljamo podatkovnim kanalima kako bismo podatke iz našeg skladišta podataka uvrstili u našu Trgovinu značajkama kao statičke značajke. Funkcije korisnika pružaju se u realnom vremenu putem platforme nazvane Platforma posjetitelja. Izvršavamo dinamičke CQL upite protiv ScyllaDB-a i . we do not need a caching layer because ScyllaDB is so fast Naša trgovina značajkama pruža do 5 milijuna statskih značajki u sekundi i pola milijuna korisničkih značajki u sekundi. Što je ML značajka? Funkcije su ulazne varijable ML modela koje se koriste za predviđanje. Neki primjeri Static Features su nagrade koje je restoran osvojio ili pogodnosti koje nudi hotel (kao što su besplatni Wi-Fi, ljubimci ili fitness centar). Funkcije korisnika prikupljaju se u realnom vremenu dok korisnici pregledavaju stranicu. Mi ih pohranjujemo u ScyllaDB-u kako bismo mogli dobiti brze upite. Neki primjeri korisničkih značajki uključuju hotele pregledane tijekom posljednjih 30 minuta, restorane pregledane tijekom posljednjih 24 sata ili recenzije podnesene tijekom posljednjih 30 dana. Tehnologije koje omogućuju platformu za posjetitelje ScyllaDB je u središtu platforme posjetitelja. Koristimo Java-based Spring Boot microservices kako bismo izložili platformu našim klijentima. To se implementira na AWS ECS Fargate. Mi pokrećemo Apache Spark na Kubernetes za naše dnevne poslove zadržavanja podataka, naše offline na online poslove. Zatim koristimo te poslove za učitavanje podataka iz našeg offline skladišta podataka u ScyllaDB tako da su dostupni na uživo. Također koristimo Amazon Kinesis za obradu događaja praćenja korisnika. Promet podataka platforme posjetitelja Sljedeći grafikon pokazuje kako se podaci kreću kroz našu platformu u četiri faze: proizvesti, unijeti, organizirati i aktivirati. Neki od tih podataka uključuju naš Cross-Device User Identity Graph, događaje praćenja ponašanja (kao što su pogledi stranica i klikovi) i događaji prijenosa koji prolaze kroz Kinesis. Mikroslužbe Platforme posjetitelja koriste se za ubrizgavanje i organiziranje tih podataka. Ključni prostor Visitor Core, koji sadrži grafikon identiteta posjetitelja Ključni prostor Metrika posjetitelja, koji sadrži činjenice i mjerila (stvari koje su ljudi radili dok su pregledavali stranicu) Proizvodimo proizvode podataka, štampane svakodnevno, u našem skladištu podataka izvan mreže – gdje su dostupne za druge integracije i druge podatkovne cijevi za upotrebu u njihovoj obradi. Ovdje je pogled na platformi posjetitelja po brojevima: Zašto dvije baze podataka? Naša online baza podataka usmjerena je na promet na web stranicama u stvarnom vremenu. ScyllaDB ispunjava tu ulogu pružanjem vrlo niskih latencija i visokog prometa. Koristimo kratkoročne TTL-ove kako bismo spriječili da se podaci u online bazi podataka rastu na neodređeno vrijeme, a naši poslovi zadržavanja podataka osiguravaju da čuvamo podatke o aktivnosti korisnika samo za stvarne posjetitelje. Tripadvisor.com dobiva puno prometa botova, a mi ne želimo pohranjivati njihove podatke i pokušavati personalizirati botove – pa brišemo i očistimo sve te podatke. Naš offline skladište podataka pohranjuje povijesne podatke koji se koriste za izvješćivanje, stvaranje drugih proizvoda podataka i obuku naših modela ML. Ne želimo velike procese podataka koji utječu na performanse naše live stranice, pa imamo dvije zasebne baze podataka koje se koriste za dvije različite svrhe. Platforma za posjetitelje Microservices Koristimo 5 mikroslužbi za posjetiteljsku platformu: Visitor Core upravlja grafom identiteta korisnika između uređaja na temelju kolačića i ID-ova uređaja. Vizitor Metric je naš motor upita, a to nam omogućuje otkrivanje činjenica i metrika za određene posjetitelje. Koristimo jezik specifičan za domenu nazvan jezik upita posjetitelja, ili VQL. Ovaj primjer VQL omogućuje vam da vidite najnovije činjenice o trgovačkim klikovima tijekom posljednja tri sata. Visitor Publisher i Visitor Saver rješavaju put pisanja, pišući podatke u platformu. Osim čuvanja podataka u ScyllaDB-u, također prenosimo podatke u skladište podataka izvan mreže. Visitor Composite pojednostavljuje objavljivanje podataka u poslovima obrade partija. Abstraktira Visitor Saver i Visitor Core kako bi identificirao posjetitelje i objavio činjenice i mjerila u jednom API pozivu. Roundtrip Microservice latentnost Ovaj grafikon pokazuje kako naše latencije mikroslužbi ostaju stabilne tijekom vremena. Prosječna latencija je samo 2,5 milisekundi, a naš P999 je ispod 12,5 milisekundi. Naši klijenti mikroslužbi imaju stroge zahtjeve za latentnošću. 95% poziva mora biti dovršeno u 12 milisekundi ili manje. ScyllaDB latentnost Ovdje je snimak ScyllaDB performansi tijekom tri dana. Na vrhuncu, ScyllaDB obrađuje 340.000 operacija u sekundi (uključujući pisanje, čitanje i brisanje), a CPU se kreće na samo 21%. ScyllaDB pruža microsecond pisma i millisecond čitanja za nas. Prijenos podataka u ScyllaDB Ova slika pokazuje kako dijelimo podatke u ScyllaDB. Visitor Metric Keyspace ima dvije tabele: Fact i Raw Metrics. Primarni ključ na tablici Fact je Visitor GUID, Fact Type i Created At Date. Kompozitni ključ za odjeljivanje je Visitor GUID i Fact Type. Ključ za skupljanje je Created At Date, što nam omogućuje da podatke razvrstamo u odjeljke prema datumu. Kolumna atributa sadrži JSON objekt koji predstavlja događaj koji se tamo dogodio. Neki primjerni činjenice su Search Terms, Page Views i Bookings. Koristimo ScyllaDB-ovu strategiju nivelacije jer: Optimiziran za upite o rasponu Vrlo dobro rješava visoku kardinalnost To je bolje za teška čitanja radnog opterećenja, a imamo oko 2-3X više čitanja nego pisanja Zašto ScyllaDB? Naše rješenje je izvorno izgrađeno pomoću Cassandre on-prem. Ali kako se razmjer povećao, tako je i operativno opterećenje. Potrebna je namijenjena operacijska podrška kako bismo mogli upravljati nadogradnjama baze podataka, rezervama itd. Također, naše rješenje zahtijeva vrlo niske latencije za osnovne komponente. Naš sustav za upravljanje identitetom korisnika mora identificirati korisnika u roku od 30 milisekundi – a za najbolju personaliziranost zahtijevamo da naša platforma za praćenje događaja odgovori u roku od 40 milisekundi. Važno je da naše rješenje ne blokira renderiranje stranice pa su naši SLA-i vrlo niski. Ispravili smo Proof of Concept s ScyllaDB-om i otkrili da je prijenos mnogo bolji od Cassandre i da je operativno opterećenje eliminirano. Željeli smo potpuno upravljanu opciju, pa smo migrirali iz Cassandre u ScyllaDB Cloud, slijedeći strategiju dvostrukog pisanja. To nam je omogućilo da migriramo s nultom prekidom pri obradi 40.000 operacija ili zahtjeva po sekundi. Ovaj dijagram prikazuje kako izgleda implementacija BYOA za ScyllaDB. U središtu dijagrama možete vidjeti 6-nod ScyllaDB klaster koji se pokreće na EC2. ScyllaDB Monitor daje nam Grafana ploče, kao i Prometheus metrikama. ScyllaDB Manager brine o automatizaciji infrastrukture kao što su pokretanje sigurnosnih kopija i popravaka. Uz ovu implementaciju, ScyllaDB bi mogao biti ko-lokaliziran vrlo blizu naših mikroslužbi kako bi nam dao još niže latencije, kao i mnogo veći prijenos i performanse. Ukratko, nadam se da sada imate bolje razumijevanje naše arhitekture, tehnologija koje pokreću platformu i kako ScyllaDB igra ključnu ulogu u omogućavanju nam da se nosimo s iznimno visokim razmjerom TripAdvisor-a. Svijet Cynthia Dunlop Cynthia je viši direktor strategije sadržaja u ScyllaDB-u i već više od 20 godina piše o razvoju softvera i inženjeringu kvalitete.