See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Tripadvisor покушава да процени ово чим се укључите на сајт, а затим вам нуди све релевантније информације на сваком клику - у року од милисекунди. U ovom članku, Dean Poulin (Tripadvisor Data Engineering Lead na timu za usluge i proizvode AI) pruža pogled na to kako oni omogućuju ovu personalizaciju. To je zasnovano na sledećem AWS re:Invent govoru: Пре-Трип оријентација U Deanovim rečima... Почнимо са брзим прегледом о томе ко је Трипадвизор и степен на који послујемо.Основан 2000. године, Трипадвизор је постао глобални лидер у области путовања и угоститељства, помажући стотинама милиона путника да планирају своје савршене путовања.Трипадвизор генерише приходе од преко 1,8 милијарди долара и јавно тржиште на НАСДАК берзи.Данас имамо талентован тим од преко 2.800 запослених који покрећу иновације, а наша платформа служи запањујућим 400 милиона јединствених посетилаца месечно – број који стално расте. У сваком датом дану, наш систем обрађује више од 2 милијарде захтева од 25 до 50 милиона корисника. Сваки клик који направите на Трипадвизор се обрађује у реалном времену. Иза тога, ми искористимо моделе машинског учења да бисмо вам доставили персонализоване препоруке – што вас приближава савршеном путовању. У срцу овог мотора персонализације је СциллаДБ који ради на АВС-у. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds Истражићемо како помажемо путницима да открију све што им је потребно да планирају своје савршено путовање: да ли је то откривање скривених драгуља, атракција које треба видети, незаборавних искустава, или најбољих места за боравак и јело. Овај [члан] је о инжењерству иза тога – како пружамо беспрекоран, релевантан садржај корисницима у реалном времену, помажући им да пронађу управо оно што траже што је брже могуће. Персонализовано планирање путовања Чим стигнете на почетну страницу Трипадвизора, Трипадвизор већ зна да ли сте гурман, авантуриста или љубитељ плаже - и видите препоруке на лицу места које изгледају персонализоване за ваше интересе. Док прегледате TripAdvisor, почињемо да персонализујемо оно што видите користећи моделе машинског учења који израчунавају оцене на основу ваше тренутне и претходне активности прегледања. Препоручујемо хотеле и искуства у којима мислимо да бисте били заинтересовани. Сортирамо хотеле на основу ваших личних преференција. Препоручујемо популарне тачке интереса у близини хотела који прегледате. Све су прилагођене на основу ваших личних преференција и претходне активности прегледања. Tripadvisor-ov model koji služi arhitekturi Tripadvisor radi na stotinama nezavisno skalabilnih mikroservisa u Kubernetes on-prem i u Amazon EKS. Naša ML Model Serving Platforma je izložena kroz jednu od ovih mikroservisa. Овај портал сервис извлачи преко 100 МЛ Модела из Клијентске услуге – што нам омогућава да покренемо А / Б тестове како бисмо пронашли најбоље моделе користећи нашу експерименталну платформу. МЛ Моделе првенствено развијају наши Научници података и Инжењери за машинско учење користећи Јупитер Нотебоок на Кубефлоу. Они се управљају и обучавају користећи МЛ Флов, а ми их располажемо на Селдон Цоре у Кубернетесу. Custom Feature продавница Магазин функција углавном служи корисничким функцијама и статичким функцијама. Статичке функције се чувају у Редис-у јер се не мењају врло често. Свакодневно покрећемо цеви за податке како бисмо учитали податке из нашег оффлине складишта података у нашу Магазин функција као статичке функције. User Features are served in real time through a platform called Visitor Platform. We execute dynamic CQL queries against ScyllaDB, and . we do not need a caching layer because ScyllaDB is so fast Наша продавница функција пружа до 5 милиона статичких функција у секунди и пола милиона корисничких функција у секунди. Šta je ML funkcija? Карактеристике су улазне променљиве у МЛ Модели који се користе за израду предвиђања. Неки примери статичких функција су награде које је ресторан освојио или погодности које нуди хотел (као што је бесплатан Ви-Фи, пријатељски са кућним љубимцима или фитнес центар). Карактеристике корисника се прикупљају у реалном времену док корисници прегледају сајт. Ми их чувамо у ScyllaDB-у тако да можемо да добијемо молња брзо упита. Неки примери корисничких карактеристика су хотели прегледани у последњих 30 минута, ресторани прегледани у последњих 24 сата, или рецензије послате у последњих 30 дана. Технологија која оснажује платформу посетилаца ScyllaDB je u srcu Platforme posetioca. Koristimo Java-based Spring Boot microservices da bismo izložili platformu našim klijentima. To se implementira na AWS ECS Fargate. Mi pokrećemo Apache Spark na Kubernetes-u za naše svakodnevne zadatke za zadržavanje podataka, naše offline na online zadatke. Zatim koristimo te zadatke da učitamo podatke iz našeg offline skladišta podataka u ScyllaDB tako da budu dostupni na uživo. Mi takođe koristimo Amazon Kinesis za obradu događaja za praćenje korisnika. Promet podataka posetilaca platforme Следећи графикон показује како подаци пролазе кроз нашу платформу у четири фазе: производи, узима, организује и активира. Подаци се производе на нашој веб страници и нашим мобилним апликацијама. Неки од тих података укључују наш Цросс-Девице Кориснички Идентитет Граф, догађаје праћења понашања (као што су прегледи страница и кликови) и догађаји стреаминг који пролазе кроз Кинесис. Microservices Visitor Platform se koriste za unos i organizovanje ovih podataka.Podaci u ScyllaDB se skladište u dva ključna prostora: Ključni prostor Visitor Core, koji sadrži grafikon identiteta posetilaca Кључни простор за мерење посетилаца, који садржи чињенице и показатеље ( ствари које су људи урадили док су прегледали сајт) Koristimo svakodnevne ETL procese za održavanje i čišćenje podataka na platformi.Gradimo proizvode podataka, štampane svakodnevno, u našem skladištu podataka van mreže – gde su dostupne za druge integracije i druge podatkovne kanale za upotrebu u njihovoj obradi. Ево погледа на Платформу посетилаца по бројевима: Zašto dve baze podataka? Наша онлине база података је фокусирана на саобраћај на сајту у реалном времену. ScyllaDB испуњава ову улогу пружањем веома ниских кашњења и високог промета. Користимо краткорочне TTL-ове да спречимо да подаци у онлине бази података расту на неодређено време, а наши послови за чување података осигуравају да чувамо само податке о активностима корисника за стварне посетиоце. Tripadvisor.com добија пуно бот саобраћаја, а ми не желимо да складиштимо њихове податке и покушамо да персонализујемо ботове - тако да бришемо и очистимо све те податке. Наш оффлине складиште података чува историјске податке који се користе за извештавање, креирање других производа података и обуку наших МЛ Модела. Не желимо да велике оффлине процесе података утичу на перформансе нашег уживо сајта, тако да имамо две одвојене базе података које се користе за две различите сврхе. Платформа за посетиоце Мицросервице Користимо 5 микро-услуга за посетилачку платформу: Visitor Core управља графиком идентитета корисника преко уређаја на основу колачића и идентификатора уређаја. Metrika posetilaca je naš motor za upite, koji nam omogućava da otkrivamo činjenice i metriku za određene posetioce. Koristimo jezik specifičan za domen koji se zove jezik upita posetilaca ili VQL. Ovaj primer VQL vam omogućava da vidite najnovije činjenice o trgovinskim klikovima u poslednja tri sata. Visitor Publisher и Visitor Saver управљају путем писања, пишући податке у платформу. Поред чувања података у СциллаДБ-у, такође преносимо податке у оффлине складиште података. Visitor Composite pojednostavljuje objavljivanje podataka u poslovima partijske obrade. Abstraktira Visitor Saver i Visitor Core da bi identifikovao posetioce i objavio činjenice i metriku u jednom API pozivu. Роундтрип Мицросервице Латенци Овај графикон илуструје како наше микросервисне кашњења остају стабилне током времена. Просечна латенција је само 2,5 милисекунди, а наш П999 је испод 12,5 милисекунди. Ово је импресиван учинак, поготово с обзиром да обрађујемо преко 1 милијарде захтева дневно. Наши клијенти за микро-услуге имају строге захтеве за кашњењем. 95% позива мора бити завршено за 12 милисекунди или мање. ScyllaDB Латенција Ево снимака перформанси СциллаДБ-а током три дана. На врхунцу, СциллаДБ обрађује 340.000 операција у секунди (укључујући писање и читање и брисање), а ЦПУ се креће на само 21%. ScyllaDB nam pruža mikrosekundno pisanje i milisekundno čitanje.Ovaj nivo brze performanse je upravo razlog zašto smo izabrali ScyllaDB. Подешавање података у ScyllaDB Ова слика показује како делимо податке у СциллаДБ. Посетиоци Метрички кључни простор има две табеле: Фацт и Рав Метрицс. Примарни кључ на табели Фацт је Посетиоци ГУИД, Тип Фацт и Креиран на датум. Композитни кључ партиције је Посетиоци ГУИД и Фацт Тип. Кључ кластера је Креиран на датум, што нам омогућава да сортирамо податке у партицијама по датуму. Колона атрибута садржи ЈСОН објекат који представља догађај који се десио тамо. Неке примјерне чињенице су Термини претраге, Погледи страница и Резервације. Користимо СциллаДБ-ову стратегију нивелисане компакције јер: Оптимизиран је за опсежне упите Врло добро се бави високом кардиналношћу Боље је за читање тешких радних оптерећења, а имамо око 2-3 пута више читања него писања Zašto ScyllaDB? Наше решење је првобитно изграђено користећи Цассандра он-прим. Али како је скала порасла, тако је и оперативно оптерећење. Захтевало је посвећену подршку операцијама како бисмо могли да управљамо надоградњама базе података, резервним копијама итд. Такође, наше решење захтева веома ниске кашњења за кључне компоненте. Наш систем за управљање корисничким идентитетом мора да идентификује корисника у року од 30 милисекунди – а за најбољу персонализацију, захтевамо да наша платформа за праћење догађаја одговори у року од 40 милисекунди. Кључно је да наше решење не блокира рендерирање странице, тако да су наши СЛА-ови веома ниски. Ispravili smo Proof of Concept sa ScyllaDB-om i otkrili da je isporuka mnogo bolja od Cassandre i da je operativno opterećenje eliminisano. Желели смо потпуно управљану опцију, тако да смо мигрирали из Цассандра у СциллаДБ Цлоуд, пратећи стратегију двоструког писања. То нам је омогућило да мигрирамо са нултим временом прекида док се бавимо 40.000 операција или захтева у секунди. Овај дијаграм показује како изгледа распоређивање BYOA ScyllaDB-а. У центру дијаграма можете видети кластер од 6 чворова ScyllaDB који ради на EC2. СциллаДБ Монитор нам даје Графана тастере, као и Прометеове метрике. ScyllaDB Manager брине о аутоматизацији инфраструктуре као што је покретање резервних копија и поправки. Са овом распоредом, СциллаДБ би могао бити ко-лоциран веома близу наших микро-услуга како би нам пружио још мање кашњења, као и много већи промет и перформансе. Укључујући, надам се да сада имате боље разумевање наше архитектуре, технологија које снабдевају платформу и како СциллаДБ игра кључну улогу у омогућавању да се носимо са изузетно високим скалом Трипадвизора. Ознаке: Cynthia Dunlop Синтхиа је виши директор за стратегију садржаја у СциллаДБ. Она је писала о развоју софтвера и инжењерству квалитета више од 20 година.