See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Jaký typ cestovatele jste vy?TripAdvisor se to pokouší vyhodnotit, jakmile se zapojíte do webu, a pak vám nabídne stále relevantnější informace na každém kliknutí – během několika milisekund.Tato personalizace je poháněna pokročilými modely ML, které působí na data uložená na ScyllaDB běžících na AWS. V tomto článku Dean Poulin (Tripadvisor Data Engineering Lead na týmu AI Services and Products) poskytuje pohled na to, jak toto přizpůsobení napomáhá. To je založeno na následujícím AWS re:Invent talk: Orientace před cestou Podle Deanových slov... Začněme rychlým pohledem na to, kdo je TripAdvisor a do jaké míry působíme.Společnost TripAdvisor, založená v roce 2000, se stala globálním lídrem v oblasti cestování a pohostinství a pomáhá stovkám milionů cestovatelů naplánovat své dokonalé výlety.TripAdvisor generuje více než 1,8 miliardy dolarů v tržbách a je veřejně obchodovanou společností na burze NASDAQ.Dnes máme talentovaný tým více než 2800 zaměstnanců, kteří podporují inovace a naše platforma slouží ohromujícím 400 milionům unikátních návštěvníků měsíčně – což je počet, který neustále roste. Každý den náš systém zpracovává více než 2 miliardy žádostí od 25 až 50 milionů uživatelů. Každé kliknutí, které uděláte na TripAdvisor, je zpracováno v reálném čase. Za tímto účelem využíváme modely strojového učení, abychom vám poskytli personalizovaná doporučení – čímž se dostanete blíže k dokonalé cestě. V srdci tohoto personalizovaného motoru je ScyllaDB, který běží na AWS. To nám umožňuje poskytovat milisekundovou latenci v měřítku, který jen málo organizací dosáhne. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds Budeme sdílet, jak TripAdvisor využívá sílu ScyllaDB, AWS a strojového učení v reálném čase k poskytování personalizovaných doporučení pro každého uživatele. Budeme zkoumat, jak pomáháme cestujícím objevovat vše, co potřebují k plánování jejich dokonalé cesty: ať už je to objevování skrytých klenotů, nezapomenutelných atrakcí, nezapomenutelných zážitků nebo nejlepších míst k pobytu a večeři. Tento [článek] je o inženýrství za tím – jak uživatelům poskytujeme bezproblémový, relevantní obsah v reálném čase, který jim pomáhá najít přesně to, co hledají co nejrychleji. Personalizované plánování výletů Jakmile se dostanete na domovskou stránku TripAdvisor, TripAdvisor již ví, zda jste foodie, dobrodruh nebo milovník pláže – a vidíte doporučení na místě, která se zdají být přizpůsobena vašim vlastním zájmům. Když prohlížíte TripAdvisor, začneme přizpůsobovat to, co vidíte, pomocí modelů strojového učení, které vypočítávají skóre na základě vaší aktuální a předchozí aktivity při prohlížení. Doporučujeme hotely a zážitky, o které si myslíme, že by vás zajímaly. Řadíme hotely podle vašich osobních preferencí. Doporučujeme oblíbené zajímavosti v blízkosti hotelu, který prohlížíte. Tripadvisor slouží architektuře Tripadvisor běží na stovkách nezávisle škálovatelných microservices v Kubernetes on-prem a v Amazon EKS. Tato služba brány získává z klientských služeb více než 100 modelů ML – což nám umožňuje spustit A/B testy, abychom našli nejlepší modely pomocí naší experimentální platformy. Modely ML vyvíjejí především naši vědci o datech a inženýři strojního učení pomocí notebooků Jupyter na Kubeflow. Jsou spravovány a školeny pomocí ML Flow a nasazujeme je na Seldon Core v Kubernetes. Obchod s vlastnostmi Custom Funkční obchod slouží především uživatelským funkcím a statickým funkcím. Statické funkce jsou uloženy v systému Redis, protože se příliš často nemění. Denně provozujeme datové potrubí pro načítání dat z našeho offline datového skladu do našeho funkčního obchodu jako statické funkce. Uživatelské funkce jsou poskytovány v reálném čase prostřednictvím platformy s názvem Visitor Platform. Provádíme dynamické dotazy CQL proti ScyllaDB a . we do not need a caching layer because ScyllaDB is so fast Náš obchod s funkcemi poskytuje až 5 milionů statických funkcí za sekundu a půl milionu uživatelských funkcí za sekundu. Co je ML funkce? Funkce jsou vstupní proměnné ML modelů, které se používají k předpovědi. Některé příklady statických funkcí zahrnují ceny, které restaurace získala, nebo vybavení nabízené hotelem (jako je bezplatné Wi-Fi, přátelské k domácím zvířatům nebo fitness centrum). Uživatelské funkce jsou shromažďovány v reálném čase, když uživatelé procházejí stránky. Ukládáme je do ScyllaDB, abychom mohli dostávat bleskové dotazy.Některé příklady uživatelských funkcí jsou hotely prohlížené za posledních 30 minut, restaurace prohlížené za posledních 24 hodin nebo recenze zaslané za posledních 30 dní. Technologie podporující návštěvnickou platformu ScyllaDB je jádrem platformy Visitor. Používáme mikroslužby Spring Boot založené na Java, abychom platformu vystavili našim klientům. To je nasazeno na AWS ECS Fargate. Pro každodenní úlohy uchovávání dat používáme Apache Spark na Kubernetes, naše offline do on-line práce. Pak tyto úlohy používáme k načítání dat z našeho offline datového skladu do ScyllaDB, aby byly k dispozici na živém webu. Používáme také Amazon Kinesis pro zpracování streamovaných událostí sledování uživatelů. Datový tok platformy návštěvníků Následující graf ukazuje, jak data proudí prostřednictvím naší platformy ve čtyřech fázích: produkovat, vstřebávat, organizovat a aktivovat. Údaje jsou generovány našimi webovými stránkami a mobilními aplikacemi. Některé z těchto údajů zahrnují náš Cross-Device User Identity Graph, události sledování chování (jako jsou zobrazení stránek a kliknutí) a streamingové události, které procházejí Kinesis. Mikroslužby Visitor Platform slouží k pohlcení a uspořádání těchto dat. Údaje v ScyllaDB jsou uloženy ve dvou klíčových prostorech: Klíčový prostor Visitor Core, který obsahuje graf identity návštěvníka Návštěvní metrický klávesový prostor, který obsahuje fakta a metriky (věci, které lidé udělali při procházení webu) Využíváme denní procesy ETL k údržbě a vyčištění dat v platformě.Vyrábíme datové produkty, které jsou denně lisovány, v našem offline datovém skladu – kde jsou k dispozici pro další integrace a další datové potrubí, které mohou být použity při jejich zpracování. Zde je pohled na návštěvnickou platformu podle čísel: Proč dvě databáze? Naše on-line databáze je zaměřena na provoz webových stránek v reálném čase. ScyllaDB plní tuto roli tím, že poskytuje velmi nízké latence a vysoký průtok. Používáme krátkodobé TTL, abychom zabránili tomu, aby data v on-line databázi rostla na dobu neurčitou, a naše úlohy uchovávání dat zajišťují, že uchováváme údaje o aktivitě uživatelů pouze pro skutečné návštěvníky. Náš offline datový sklad uchovává historická data používaná pro reportování, vytváření dalších datových produktů a školení našich modelů ML. Nechceme, aby rozsáhlé offline datové procesy ovlivňovaly výkon našich živých stránek, takže máme dvě samostatné databáze používané pro dva různé účely. Návštěvní platformy Microservices Pro návštěvnickou platformu používáme 5 mikroslužeb: Visitor Core spravuje cross-device uživatelský identifikační graf založený na souborech cookie a ID zařízení. Metrika návštěvníků je náš vyhledávač, který nám poskytuje možnost vystavovat fakta a metriky pro konkrétní návštěvníky. Používáme jazyk specifický pro konkrétní doménu nazývaný jazyk vyhledávání návštěvníků nebo VQL. Tento příklad VQL vám umožňuje zobrazit nejnovější fakta o obchodních kliknutích za poslední tři hodiny. Návštěvník Publisher a Návštěvník Saver spravují cestu psaní a zapisují data do platformy. Kromě ukládání dat ve ScyllaDB také přenášíme data do datového skladu offline. Visitor Composite zjednodušuje zveřejňování dat v úkolech souborového zpracování. Abstraktuje Visitor Saver a Visitor Core, aby identifikoval návštěvníky a publikoval fakta a metriky v jedné výzvě API. Roundtrip Microservice zpoždění Tento graf ukazuje, jak naše latence v mikroslužbách zůstávají v průběhu času stabilní. Průměrná latence je pouhých 2,5 milisekund a náš P999 je kratší než 12,5 milisekund. Naši klienti mikroslužeb mají přísné požadavky na latenci. 95% hovorů musí být dokončeno za 12 milisekund nebo méně. ScyllaDB latence Zde je ukázka výkonu ScyllaDB za tři dny. Na vrcholu se ScyllaDB zabývá 340 000 operacemi za sekundu (včetně psaní, čtení a odstraňování) a procesor se pohybuje na pouhých 21%. ScyllaDB nám poskytuje mikrosekundové psaní a milisekundové čtení.Tato úroveň rychlého výkonu je přesně tím, proč jsme si vybrali ScyllaDB. Rozdělení dat do ScyllaDB Tento obrázek ukazuje, jak rozdělujeme data do ScyllaDB. Návštěvník Metrický klíčový prostor má dvě tabulky: Fakt a Raw Metrics. Primárním klíčem na tabulce Fakt je návštěvník GUID, Typ faktů a Vytvořeno na datum. Kompozitním oddílovým klíčem je návštěvník GUID a Typ faktů. Klasifikační klíčem je Vytvořeno na datum, což nám umožňuje třídit data v oddílech podle data. Sloupec atributů obsahuje objekt JSON, který reprezentuje událost, která se tam vyskytla. Některé příklady faktů jsou Vyhledávací podmínky, zobrazení stránek a rezervace. Používáme ScyllaDB Leveled Compaction Strategie, protože: Optimalizováno pro dotazy o rozsahu Velmi dobře zvládá vysokou kardinálnost Je to lepší pro těžké čtení a máme asi 2-3x více čtení než psaní. Proč právě ScyllaDB? Naše řešení bylo původně postaveno pomocí aplikace Cassandra on-prem. Ale jak se rozsah zvýšil, tak se zvýšila i provozní zátěž. Vyžadovalo to speciální operační podporu, abychom mohli spravovat upgrady databáze, zálohování atd. Také naše řešení vyžaduje velmi nízké latence pro základní komponenty. Náš systém řízení identity uživatele musí identifikovat uživatele do 30 milisekund – a pro nejlepší personalizaci vyžadujeme, aby naše platforma pro sledování událostí reagovala do 40 milisekund. Je důležité, aby naše řešení neblokovalo renderování stránky, takže naše SLA jsou velmi nízké. Spustili jsme Proof of Concept s ScyllaDB a zjistili jsme, že průtok je mnohem lepší než Cassandra a provozní zátěž byla odstraněna. Chtěli jsme plně spravovanou možnost, a tak jsme migrovali z Cassandry do cloudu ScyllaDB podle strategie dvojitého psaní.To nám umožnilo migrovat s nulovým časem vypnutí při zpracování 40 000 operací nebo požadavků za sekundu.Následně jsme migrovali z cloudu ScyllaDB do modelu „Přineste svůj vlastní účet“ společnosti ScyllaDB, kde můžete mít tým ScyllaDB nasadit databázi ScyllaDB do vašeho vlastního účtu AWS. Tento diagram ukazuje, jak vypadá nasazení BYOA ScyllaDB. V centru diagramu můžete vidět 6-nodový cluster ScyllaDB, který běží na EC2. ScyllaDB Monitor nám dává Grafana dashboards stejně jako Prometheus metriky. ScyllaDB Manager se stará o automatizaci infrastruktury, jako je spuštění zálohování a oprav. S tímto nasazením by mohla být ScyllaDB umístěna velmi blízko našich mikroslužeb, aby nám poskytla ještě nižší latence a mnohem vyšší průtok a výkon. Závěrem doufám, že nyní máte lepší pochopení naší architektury, technologií, které podporují platformu, a toho, jak ScyllaDB hraje klíčovou roli v tom, že nám umožňuje zvládnout extrémně vysoký rozsah služby TripAdvisor. Procházení Cynthia Dunlop Cynthia je Senior Director of Content Strategy v ScyllaDB. Píše o vývoji softwaru a inženýrství kvality více než 20 let.