See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Tripadvisor intenta avaluar això tan aviat com interactueu amb el lloc, i després us ofereix informació cada vegada més rellevant a cada clic, en qüestió de mil·lisegons. Aquesta personalització està alimentada per models ML avançats que actuen sobre les dades emmagatzemades en ScyllaDB que s'executen a AWS. En aquest article, Dean Poulin (Líder en Enginyeria de Dades de TripAdvisor en l'equip de Serveis i Productes d'IA) dóna un cop d'ull a com potencien aquesta personalització. Es basa en el següent discurs AWS re:Invent: Orientació Pre-Trip En les paraules de Dean... Tripadvisor, fundat el 2000, s'ha convertit en un líder mundial en viatges i hospitalitat, ajudant centenars de milions de viatgers a planificar els seus viatges perfectes. Tripadvisor genera més de 1,8 mil milions de dòlars en ingressos i és una companyia cotitzada públicament a la borsa NASDAQ. Avui, tenim un talentós equip de més de 2.800 empleats que impulsen la innovació, i la nostra plataforma serveix a 400 milions de visitants únics al mes, un nombre que creix contínuament. En qualsevol dia, el nostre sistema gestiona més de 2 mil milions de sol·licituds de 25 a 50 milions d'usuaris. Cada clic que feu a Tripadvisor es processa en temps real. Darrere d'això, estem aprofitant models d'aprenentatge automàtic per oferir recomanacions personalitzades - portant-vos més a prop d'aquest viatge perfecte. Al cor d'aquest motor de personalització és ScyllaDB que funciona a AWS. Això ens permet oferir una latència de mil·lisegons a una escala que poques organitzacions arriben. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds Compartirem com Tripadvisor aprofita el poder de ScyllaDB, AWS i aprenentatge automàtic en temps real per oferir recomanacions personalitzades per a cada usuari. Explorarem com ajudarem els viatgers a descobrir tot el que necessiten per planificar el seu viatge perfecte: ja sigui descobrint gemmes amagats, atraccions imprescindibles, experiències inoblidables o els millors llocs per allotjar-se i sopar. Planificació de viatge personalitzada Imagineu que esteu planejant un viatge. tan aviat com arribeu a la pàgina principal de Tripadvisor, Tripadvisor ja sap si sou un amant del menjar, un aventurer o un amant de la platja - i veieu recomanacions a punt que semblen personalitzades per als vostres propis interessos. A mesura que navegues per TripAdvisor, comencem a personalitzar el que veus utilitzant models de Machine Learning que calculen les puntuacions en funció de la teva activitat de navegació actual i anterior. Recomanem hotels i experiències que creiem que t'interessarien. Classifiquem hotels segons les teves preferències personals. Recomanem punts d'interès populars prop de l'hotel que estàs veient. El model de Tripadvisor que serveix l'arquitectura Tripadvisor s'executa en centenars de microservicis escalables de forma independent a Kubernetes on-prem i a Amazon EKS. La nostra plataforma de servei de models ML s'exposa a través d'un d'aquests microservicis. Aquest servei de porta d'accés abstraeix més de 100 models ML dels Serveis del Client, el que ens permet executar proves A/B per trobar els millors models utilitzant la nostra plataforma d'experimentació. Els models ML són desenvolupats principalment pels nostres científics de dades i enginyers d'aprenentatge automàtic utilitzant Jupyter Notebooks a Kubeflow. Es gestionen i s'entrenen utilitzant ML Flow, i els desplegem a Seldon Core a Kubernetes. La botiga personalitzada La Botiga de característiques serveix principalment les característiques d'usuari i les característiques estàtiques. Les característiques estàtiques s'emmagatzemen a Redis perquè no canvien molt sovint. Executem diàriament pipelines de dades per carregar dades del nostre magatzem de dades fora de línia a la nostra Botiga de característiques com a característiques estàtiques. Les característiques de l'usuari es proporcionen en temps real a través d'una plataforma anomenada Plataforma de visitants. Executem consultes CQL dinàmiques contra ScyllaDB, i . we do not need a caching layer because ScyllaDB is so fast La nostra botiga de característiques ofereix fins a 5 milions de característiques estàtiques per segon i mig milió de característiques d'usuari per segon. Què és una característica ML? Les característiques són variables d'entrada als models ML que s'utilitzen per fer una predicció. Alguns exemples de característiques estàtiques són els premis que ha guanyat un restaurant o les comoditats que ofereix un hotel (com ara Wi-Fi gratuït, amigable amb animals de companyia o centre de fitness). Les característiques dels usuaris es recopilen en temps real mentre els usuaris naveguen pel lloc. Els emmagatzemem a ScyllaDB perquè puguem obtenir consultes ràpides. Alguns exemples de característiques dels usuaris són els hotels vistos en els últims 30 minuts, els restaurants vistos en les últimes 24 hores o les opinions enviades en els últims 30 dies. Les tecnologies que impulsen la plataforma de visitants ScyllaDB és el nucli de la Plataforma de Visitants. Utilitzem microservices Spring Boot basats en Java per exposar la plataforma als nostres clients. Això es desplega a AWS ECS Fargate. Executem Apache Spark a Kubernetes per a les nostres tasques diàries de retenció de dades, les nostres tasques fora de línia a en línia. Després utilitzem aquestes tasques per carregar dades del nostre magatzem de dades fora de línia a ScyllaDB perquè estiguin disponibles al lloc en viu. També utilitzem Amazon Kinesis per processar esdeveniments de seguiment d'usuaris de streaming. El flux de dades de la plataforma de visitants El gràfic següent mostra com les dades flueixen a través de la nostra plataforma en quatre etapes: produir, absorbir, organitzar i activar. Les dades són produïdes pel nostre lloc web i les nostres aplicacions mòbils. Algunes d'aquestes dades inclouen el nostre gràfic d'identitat d'usuari entre dispositius, els esdeveniments de seguiment del comportament (com les visualitzacions de pàgines i els clics) i els esdeveniments de streaming que passen a través de Kinesis. Els microservicis de la Plataforma de visitants s'utilitzen per absorbir i organitzar aquestes dades. Les dades en ScyllaDB s'emmagatzemen en dos espais clau: L'espai clau del nucli del visitant, que conté el gràfic d'identitat del visitant L'espai clau Mètric del visitant, que conté fets i mètriques (les coses que la gent va fer quan van navegar pel lloc) Utilitzem processos ETL diaris per mantenir i netejar les dades en la plataforma. Produïm Productes de dades, estampats diàriament, en el nostre magatzem de dades fora de línia - on estan disponibles per a altres integracions i altres canonades de dades per utilitzar en el seu processament. Aquí teniu una ullada a la Plataforma de Visitants per números: Per què dues bases de dades? La nostra base de dades en línia està centrada en el trànsit del lloc web en temps real. ScyllaDB compleix aquest paper proporcionant latències molt baixes i alt rendiment. Utilitzem TTLs a curt termini per evitar que les dades de la base de dades en línia creixin indefinidament, i les nostres tasques de retenció de dades asseguren que només mantenim les dades d'activitat dels usuaris per als visitants reals. Tripadvisor.com rep un munt de trànsit de bot, i no volem emmagatzemar les seves dades i tractar de personalitzar els bots - per tant, esborrem i netejem totes aquestes dades. El nostre magatzem de dades en línia conserva les dades històriques utilitzades per a l'elaboració de informes, la creació d'altres productes de dades i la formació dels nostres models ML. No volem que els processos de dades en línia a gran escala afectin el rendiment del nostre lloc en viu, de manera que tenim dues bases de dades separades utilitzades per a dos propòsits diferents. Plataforma de microservei de visitants Utilitzem 5 microservicis per a la Plataforma de Visitants: Visitor Core gestiona el gràfic d'identitat de l'usuari a través del dispositiu basat en cookies i identificadors de dispositius. Visitor Metric és el nostre motor de consulta, i que ens proporciona la possibilitat d'exposar fets i mètriques per a visitants específics. utilitzem un llenguatge específic de domini anomenat llenguatge de consulta de visitants, o VQL. Aquest exemple VQL li permet veure els últims fets de clic comercial en les últimes tres hores. Visitor Publisher i Visitor Saver gestionen el camí d'escriptura, escrivint dades a la plataforma. A més d'emmagatzemar dades a ScyllaDB, també fluïm dades al magatzem de dades fora de línia. Visitor Composite simplifica la publicació de dades en tasques de processament de lot. Abstraeix Visitor Saver i Visitor Core per identificar els visitants i publicar fets i mètriques en una única crida d'API. Roundtrip Microservice Latency en línia Aquest gràfic il·lustra com les nostres latències de microservei es mantenen estables al llarg del temps. La latència mitjana és de només 2,5 mil·lisegons, i el nostre P999 és inferior a 12,5 mil·lisegons. Els nostres clients de microservei tenen requisits estrictes de latència. 95% de les trucades han de completar-se en 12 mil·lisegons o menys. ScyllaDB Latencia Aquí teniu un resum del rendiment de ScyllaDB en tres dies. Al pic, ScyllaDB està tractant 340.000 operacions per segon (incloent escriu i llegeix i esborra) i la CPU està fluctuant a només 21%. ScyllaDB proporciona microsegons d'escriptura i mil·lisegons de lectura per a nosaltres. Aquest nivell de rendiment ràpid és precisament per això que vam triar ScyllaDB. Partituració de dades a ScyllaDB Aquesta imatge mostra com particionem les dades a ScyllaDB. El Visitor Metric Keyspace té dues taules: Fact i Raw Metrics. La clau principal de la taula Fact és Visitor GUID, Fact Type i Created At Date. La clau de partició compost és el Visitor GUID i Fact Type. La clau de clúster és Created At Date, que ens permet ordenar les dades en particions per data. La columna d'atributs conté un objecte JSON que representa l'esdeveniment que va ocórrer allà. Alguns exemples de fets són els termes de cerca, les vistes de pàgina i les reserves. Utilitzem l’Estratègia de Compactació Nivellada de ScyllaDB perquè: Està optimitzat per a les consultes de rang Es tracta d'una alta cardinalitat molt bé És millor per a càrregues de treball pesades en lectura, i tenim al voltant de 2-3X més lectures que escrites Per què ScyllaDB? La nostra solució va ser construïda originalment utilitzant Cassandra on-prem. Però a mesura que l'escala creixia, també la càrrega operativa. Es necessitava suport d'operacions dedicades per gestionar les actualitzacions de la base de dades, backups, etc. A més, la nostra solució requereix latències molt baixes per als components principals. El nostre sistema de gestió d'identitats d'usuari ha d'identificar l'usuari dins de 30 mil·lisegons - i per a la millor personalització, necessitem que la nostra plataforma de seguiment d'esdeveniments respongui en 40 mil·lisegons. És fonamental que la nostra solució no bloquegi la renderització de la pàgina, de manera que els nostres SLA són molt baixos. Vam executar una Prova de Concepte amb ScyllaDB i vam trobar que el rendiment era molt millor que Cassandra i la càrrega operativa es va eliminar. ScyllaDB ens va donar una base de dades de servei en viu monstruosament ràpida amb les més baixes latencies possibles. Volíem una opció totalment gestionada, per la qual cosa vam migrar de Cassandra a ScyllaDB Cloud, seguint una estratègia de doble escriptura. Això ens va permetre migrar amb zero temps d'aturada i gestionar 40.000 operacions o sol·licituds per segon. Més tard, vam migrar de ScyllaDB Cloud al model "Porta el teu propi compte" de ScyllaDB, on podeu fer que l'equip de ScyllaDB desplegui la base de dades de ScyllaDB al vostre compte AWS. Això ens va donar un millor rendiment i una millor privacitat de dades. Aquest diagrama mostra com es veu la implementació BYOA de ScyllaDB. Al centre del diagrama, es pot veure un clúster ScyllaDB de 6 nusos que s'executa en EC2. ScyllaDB Monitor ens dóna els panells de Grafana, així com les mètriques de Prometheus. ScyllaDB Manager s'ocupa de l'automatització de la infraestructura, com ara desencadenar backups i reparacions. Amb aquesta implementació, ScyllaDB podria col·locar-se molt a prop dels nostres microservicis per donar-nos latencies encara més baixes, així com molt més rendiment i rendiment. En definitiva, espero que ara tingueu una millor comprensió de la nostra arquitectura, de les tecnologies que alimenten la plataforma i de com ScyllaDB juga un paper crític en permetre'ns gestionar l'extremadament alta escala de Tripadvisor. Més sobre Cynthia Dunlop Cynthia és directora sènior d'estratègia de contingut a ScyllaDB. Ha escrit sobre el desenvolupament de programari i l'enginyeria de qualitat durant més de 20 anys.