See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Tripadvisor sa to pokúsi posúdiť hneď, ako sa zapojíte do webu, a potom vám poskytne čoraz relevantnejšie informácie pri každom kliknutí – v priebehu niekoľkých milisekúnd. V tomto článku Dean Poulin (Tripadvisor Data Engineering Lead v tíme služieb a produktov AI) poskytuje pohľad na to, ako podporujú túto personalizáciu. Dean zdieľa chuť na technické výzvy spojené s poskytovaním personalizácie v reálnom čase v masívnom (a rýchlo rastúcom) rozsahu spoločnosti TripAdvisor. Je založený na nasledujúcom AWS re:Invent talk: Predbežná orientácia Podľa Deanových slov... Začnime rýchlym pohľadom na to, kto je TripAdvisor a do akej miery pôsobíme.Spoločnosť TripAdvisor bola založená v roku 2000 a stala sa globálnym lídrom v oblasti cestovania a pohostinnosti a pomohla stovkám miliónov cestovateľov naplánovať svoje perfektné výlety.TripAdvisor generuje viac ako 1,8 miliardy dolárov príjmov a je verejne obchodovanou spoločnosťou na burze NASDAQ.Dnes máme talentovaný tím s viac ako 2800 zamestnancami, ktorí podporujú inovácie a naša platforma slúži ohromujúcim 400 miliónom unikátnych návštevníkov mesačne – počet, ktorý neustále rastie. Každý deň náš systém spracováva viac ako 2 miliardy požiadaviek od 25 do 50 miliónov používateľov. Každé kliknutie, ktoré urobíte na Tripadvisor, sa spracováva v reálnom čase. Za týmto procesom využívame modely strojového učenia na poskytovanie personalizovaných odporúčaní – čo vás priblíži k tej perfektnej ceste. V srdci tohto personalizovaného motora je ScyllaDB, ktorý beží na AWS. To nám umožňuje poskytovať milisekundovú latenciu v rozsahu, ktorý len málo organizácií dosiahne. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds Budem zdieľať, ako TripAdvisor využíva silu ScyllaDB, AWS a strojového učenia v reálnom čase na poskytovanie personalizovaných odporúčaní pre každého používateľa. Budeme skúmať, ako pomôžeme cestujúcim objaviť všetko, čo potrebujú na plánovanie ich perfektnej cesty: či už je to objavovanie skrytých drahokamov, must-see atrakcií, nezabudnuteľných zážitkov alebo najlepších miest na pobyt a večeru. Personalizované cestovné plánovanie Akonáhle sa dostanete na domovskú stránku TripAdvisor, TripAdvisor už vie, či ste foodie, dobrodruh alebo milovník pláže - a vidíte odporúčania na mieste, ktoré sa zdajú byť prispôsobené vašim vlastným záujmom. Ako prehľadávate TripAdvisor, začneme personalizovať to, čo vidíte pomocou modelov strojového učenia, ktoré vypočítavajú skóre na základe vašej aktuálnej a predchádzajúcej aktivity prehliadania. Odporúčame hotely a zážitky, o ktorých si myslíme, že by vás mohli zaujímať. Zoraďujeme hotely na základe vašich osobných preferencií. Odporúčame obľúbené zaujímavosti v blízkosti hotela, ktorý si prezeráte. Všetky sú prispôsobené na základe vašich osobných preferencií a predchádzajúcej aktivity prehliadania. Tripadvisor model slúžiaci architektúre Tripadvisor beží na stovkách nezávisle škálovateľných mikroslužieb v Kubernetes on-prem a v Amazon EKS. Naša ML Model Serving Platform je vystavená prostredníctvom jednej z týchto mikroslužieb. Táto služba brány extrahuje viac ako 100 modelov ML z klientskych služieb – čo nám umožňuje spustiť A/B testy na nájdenie najlepších modelov pomocou našej experimentálnej platformy. Modely ML vyvíjajú predovšetkým naši vedci o údajoch a inžinieri strojového učenia pomocou notebookov Jupyter na Kubeflow. Sú spravované a školené pomocou ML Flow a nasadzujeme ich na Seldon Core v Kubernetes. Náš Custom Feature Store poskytuje funkcie pre naše modely ML, ktoré im umožňujú robiť presné predpovede. Obchod s vlastnými funkciami Funkčný obchod slúži predovšetkým používateľským funkciám a statickým funkciám. Statické funkcie sú uložené v systéme Redis, pretože sa nemenia veľmi často. Dennodenne prevádzkujeme dátové potrubia na načítanie údajov z nášho offline dátového skladu do nášho funkčného obchodu ako statické funkcie. Funkcie používateľa sú poskytované v reálnom čase prostredníctvom platformy s názvom Platforma návštevníkov. Vykonávame dynamické dotazy CQL proti ScyllaDB a . we do not need a caching layer because ScyllaDB is so fast Náš obchod s funkciami poskytuje až 5 miliónov statických funkcií za sekundu a pol milióna užívateľských funkcií za sekundu. Čo je ML funkcia? Funkcie sú vstupnými premennými modelov ML, ktoré sa používajú na predpovedanie. Niektoré príklady statických funkcií zahŕňajú ocenenia, ktoré vyhrala reštaurácia, alebo vybavenie ponúkané hotelom (ako je bezplatné Wi-Fi, priateľské k domácim miláčikom alebo fitnes centrum). Používateľské funkcie sa zhromažďujú v reálnom čase, keď používatelia prehľadávajú lokalitu. Ukladáme ich v ScyllaDB, aby sme mohli získať bleskové rýchle dotazy. Niektoré príklady používateľských funkcií sú hotely zobrazené za posledných 30 minút, reštaurácie zobrazené za posledných 24 hodín alebo recenzie odoslané za posledných 30 dní. Technológie posilňujúce návštevnícku platformu ScyllaDB je jadrom platformy Visitor Platform. Používame mikroslužby Spring Boot založené na Java, aby sme platformu vystavili našim klientom. To je nasadené na AWS ECS Fargate. Spustili sme Apache Spark na Kubernetes pre naše denné úlohy uchovávania dát, naše offline na online úlohy. Potom tieto úlohy používame na načítanie údajov z nášho offline dátového skladu do ScyllaDB, aby boli k dispozícii na živom mieste. Používame tiež Amazon Kinesis na spracovanie udalostí sledovania používateľov. Prúd údajov návštevníckej platformy Nasledujúci graf ukazuje, ako dáta prúdia cez našu platformu v štyroch fázach: produkovať, požívať, organizovať a aktivovať. Údaje sú generované našou webovou stránkou a našimi mobilnými aplikáciami. Niektoré z týchto údajov zahŕňajú náš Cross-Device User Identity Graph, udalosti behavior Tracking (ako sú zobrazenia stránok a kliknutia) a streamingové udalosti, ktoré prechádzajú cez Kinesis. Na zhromažďovanie a organizovanie týchto údajov sa používajú mikroslužby platformy Visitor.Data v systéme ScyllaDB sú uložené v dvoch kľúčových priestoroch: Kľúčový priestor Visitor Core, ktorý obsahuje graf identity návštevníka Návštevnícky metrický kľúčový priestor, ktorý obsahuje fakty a metriky (veci, ktoré ľudia robili pri prehliadaní stránky) Využívame denné procesy ETL na údržbu a vyčistenie dát v platforme.Vyrábame denné dátové produkty v našom offline dátovom sklade – kde sú k dispozícii pre ďalšie integrácie a iné dátové potrubia na použitie pri ich spracovaní. Tu je pohľad na návštevnícku platformu podľa čísel: Prečo dve databázy? Naša online databáza je zameraná na prevádzku webových stránok v reálnom čase. ScyllaDB plní túto úlohu tým, že poskytuje veľmi nízke latencie a vysoký prietok. Používame krátkodobé TTL, aby sme zabránili tomu, aby údaje v online databáze narástli na dobu neurčitú, a naše úlohy uchovávania údajov zabezpečujú, že uchovávame iba údaje o aktivite používateľov pre skutočných návštevníkov. Tripadvisor.com dostáva veľa botovej prevádzky a nechceme ukladať ich dáta a snažiť sa personalizovať roboty – takže všetky tieto dáta odstránime a vyčistíme. Náš offline dátový sklad uchováva historické údaje používané na podávanie správ, vytváranie iných dátových produktov a školenie našich modelov ML. Nechceme, aby rozsiahle offline dátové procesy ovplyvnili výkon našich živých stránok, takže máme dve samostatné databázy používané pre dva rôzne účely. Návštevnícka platforma Microservices Na návštevnícku platformu používame 5 mikroslužieb: Visitor Core spravuje graf identity používateľa cez zariadenie na základe súborov cookie a identifikátorov zariadení. Visitor Metric je náš vyhľadávací nástroj, ktorý nám poskytuje možnosť odhaliť fakty a metriky pre konkrétnych návštevníkov. Používame jazyk špecifický pre doménu nazývaný jazyk vyhľadávania návštevníkov alebo VQL. Tento príklad VQL vám umožňuje zobraziť najnovšie obchodné fakty kliknutia za posledné tri hodiny. Visitor Publisher a Visitor Saver spravujú cestu písania a zapisujú dáta do platformy. Okrem ukladania údajov v ScyllaDB tiež prenášame dáta do databázy offline. Visitor Composite zjednodušuje publikovanie údajov v úlohách na spracovanie dávok. Abstraktuje Visitor Saver a Visitor Core na identifikáciu návštevníkov a publikovanie faktov a ukazovateľov v jednej výzve API. Roundtrip Microservice latencia Tento graf ilustruje, ako naše mikroslužobné latencie zostávajú stabilné v priebehu času. Priemerná latencia je len 2,5 milisekúnd a náš P999 je menej ako 12,5 milisekúnd. Naši mikroslužobní klienti majú prísne požiadavky na latenciu. 95% hovorov musí byť dokončených za 12 milisekúnd alebo menej. ScyllaDB latencia Tu je snímka výkonu ScyllaDB za tri dni. Na vrchole sa ScyllaDB zaoberá 340 000 operáciami za sekundu (vrátane písania, čítania a odstraňovania) a CPU sa pohybuje len na úrovni 21%. ScyllaDB poskytuje mikrosekundové písanie a milisekundové čítanie pre nás.Táto úroveň rýchleho výkonu je presne dôvodom, prečo sme si vybrali ScyllaDB. Rozdelenie údajov do ScyllaDB Tento obrázok ukazuje, ako rozdeľujeme dáta do ScyllaDB. Návštevník Metrický kľúčový priestor má dve tabuľky: Fakt a Surové Metriky. Primárnym kľúčom v tabuľke Fakt je Návštevník GUID, Typ faktov a Vytvorené na dátum. Kompozitným kľúčom oddelenia je Návštevník GUID a Typ faktov. Klastrovací kľúč je Vytvorený na dátum, ktorý nám umožňuje zoradiť dáta do oddielov podľa dátumu. Stĺpec atribútov obsahuje objekt JSON, ktorý reprezentuje udalosť, ktorá sa tam vyskytla. Niektoré príklady faktov sú Vyhľadávacie podmienky, Zobrazenia stránok a Rezervácie. Používame stratégiu Leveled Compaction spoločnosti ScyllaDB, pretože: Je optimalizovaný pre rozsahové dotazy Veľmi dobre zvláda vysokú kardinálnosť Je to lepšie pre náročné na čítanie pracovné zaťaženie a máme asi 2-3X viac čítaní ako písaní Prečo ScyllaDB? Naše riešenie bolo pôvodne postavené pomocou aplikácie Cassandra on-prem. Ale ako sa rozsah zvýšil, tak sa zvýšila aj prevádzková záťaž. Vyžadovala špeciálnu prevádzkovú podporu, aby sme mohli spravovať upgrady databázy, zálohovanie atď. Naše riešenie tiež vyžaduje veľmi nízke latencie pre základné komponenty. Náš systém riadenia identity používateľa musí identifikovať používateľa do 30 milisekúnd – a pre najlepšiu personalizáciu vyžadujeme, aby naša platforma na sledovanie udalostí reagovala do 40 milisekúnd. Je dôležité, aby naše riešenie neblokovalo renderovanie stránky, takže naše SLA sú veľmi nízke. Spustili sme Preukázanie konceptu so spoločnosťou ScyllaDB a zistili sme, že výkon je oveľa lepší ako Cassandra a prevádzkové zaťaženie bolo odstránené. Chceli sme plne spravovanú možnosť, takže sme migrovali z Cassandry do Cloud ScyllaDB podľa stratégie dvojitého písania. To nám umožnilo migrovať s nulovým časom prestávky pri spracovaní 40 000 operácií alebo požiadaviek za sekundu. Neskôr sme migrovali z Cloud ScyllaDB do modelu ScyllaDB „Priniesť svoj vlastný účet“, kde môžete mať tím ScyllaDB nasadiť databázu ScyllaDB do svojho vlastného účtu AWS. Tento diagram ukazuje, ako vyzerá nasadenie BYOA spoločnosti ScyllaDB. V strede diagramu môžete vidieť 6-uzlový cluster ScyllaDB, ktorý beží na EC2. ScyllaDB Monitor nám poskytuje Grafana dosky, ako aj Prometheus metriky. ScyllaDB Manager sa stará o automatizáciu infraštruktúry, ako je spustenie zálohovania a opravy. S týmto nasadením by mohol byť ScyllaDB umiestnený veľmi blízko k našim mikroslužbám, aby nám poskytol ešte nižšie latencie, ako aj oveľa vyšší prietok a výkon. Na záver dúfam, že teraz máte lepšie pochopenie našej architektúry, technológií, ktoré podporujú platformu, a ako ScyllaDB zohráva kľúčovú úlohu pri umožnení, aby sme zvládli extrémne vysoký rozsah služby TripAdvisor. Všetko o Cynthia Dunlop Cynthia je vedúcou riaditeľkou pre obsahovú stratégiu v spoločnosti ScyllaDB. Píše o vývoji softvéru a inžinierstve kvality viac ako 20 rokov.