See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Tripadvisor intenta avaliar isto tan pronto como se involucre co sitio, e logo ofrece información cada vez máis relevante en cada clic, nun millisegundo.Esta personalización está impulsada por modelos ML avanzados que actúan sobre datos almacenados en ScyllaDB en AWS. Neste artigo, Dean Poulin (Tripadvisor Data Engineering Lead no equipo de Servizos e Produtos de IA) ofrece unha ollada a como impulsan esta personalización. Está baseado na seguinte conversa de AWS re:Invent: Orientación Pre-Trip As palabras de Dean... Fundada en 2000, Tripadvisor converteuse nun líder mundial en viaxes e hospitalidade, axudando a centos de millóns de viaxeiros a planificar as súas viaxes perfectas. Tripadvisor xera máis de 1,8 mil millóns de dólares en ingresos e é unha empresa publicamente negociada na bolsa de valores NASDAQ. Hoxe, temos un talentoso equipo de máis de 2.800 empregados impulsando a innovación, e a nosa plataforma serve a 400 millóns de visitantes únicos por mes - un número que está crecendo continuamente. En calquera día, o noso sistema xestiona máis de 2 mil millóns de solicitudes de 25 a 50 millóns de usuarios. Cada clic que fas en Tripadvisor é procesado en tempo real. Detrás diso, estamos aproveitando modelos de aprendizaxe automática para entregar recomendacións personalizadas - facéndote máis preto desa viaxe perfecta. No corazón deste motor de personalización é ScyllaDB que funciona en AWS. Isto permítenos ofrecer latencia de milisegundos nunha escala que poucas organizacións alcanzan. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds Imos compartir como Tripadvisor está aproveitando o poder de ScyllaDB, AWS e aprendizaxe automática en tempo real para ofrecer recomendacións personalizadas para cada usuario. Exploraremos como axudamos aos viaxeiros a descubrir todo o que precisan para planificar a súa viaxe perfecta: se se trata de descubrir xoias ocultas, atraccións imprescindibles, experiencias inesquecibles ou os mellores lugares para ficar e xantar. Planificación de viaxes personalizada Imaxina que estás a planear unha viaxe.Axiña que chegas á páxina de inicio de Tripadvisor, Tripadvisor xa sabe se es un foodie, un aventureiro ou un amante da praia - e estás a ver recomendacións puntuais que parecen personalizadas para os teus propios intereses. Ao navegar por TripAdvisor, comezamos a personalizar o que ves usando modelos de Machine Learning que calculan as puntuacións en función da túa actividade de navegación actual e anterior. Recomendamos hoteis e experiencias que pensamos que che interesarían. Ordenamos hoteis segundo as túas preferencias persoais. Recomendamos puntos de interese populares preto do hotel que estás a ver. Todos estes están axustados segundo as túas propias preferencias persoais e a actividade de navegación anterior. O modelo de Tripadvisor que serve a arquitectura Tripadvisor funciona en centos de microservizos escalables de forma independente en Kubernetes on-prem e en Amazon EKS. A nosa plataforma de servidores de modelos ML expónse a través dun destes microservizos. Este servizo de gateway extrae máis de 100 modelos ML dos Servizos do Cliente - o que nos permite executar probas A/B para atopar os mellores modelos usando a nosa plataforma de experimentación. Os modelos ML son desenvolvidos principalmente polos nosos científicos de datos e enxeñeiros de aprendizaxe automática usando Jupyter Notebooks en Kubeflow. Están xestionados e adestrados usando ML Flow, e implementámolos en Seldon Core en Kubernetes. A tenda personalizada A Feature Store serve principalmente a funcionalidades do usuario e as funcionalidades estáticas. As funcionalidades estáticas almacénanse en Redis porque non cambian con moita frecuencia. Executamos canles de datos diariamente para cargar datos do noso almacén de datos fóra de liña á nosa Feature Store como funcionalidades estáticas. As funcións de usuario son servidas en tempo real a través dunha plataforma chamada Plataforma de Visitantes. Executamos consultas CQL dinámicas contra ScyllaDB, e . we do not need a caching layer because ScyllaDB is so fast A nosa tenda de recursos ofrece ata 5 millóns de funcións estáticas por segundo e medio millón de funcións de usuario por segundo. ¿Que é unha característica ML? As características son variables de entrada para os modelos ML que se usan para facer unha predición. Algúns exemplos de características estáticas son premios que un restaurante gañou ou comodidades ofrecidas por un hotel (como Wi-Fi gratuíto, amigable ou centro de fitness). As funcións do usuario recóllense en tempo real mentres os usuarios navegan polo sitio. Almacenámolas en ScyllaDB para que poidamos obter consultas rápidas. Algúns exemplos de funcións do usuario son os hoteis visitados nos últimos 30 minutos, restaurantes visitados nas últimas 24 horas ou comentarios enviados nos últimos 30 días. As tecnoloxías que alimentan a plataforma de visitantes ScyllaDB é o núcleo da Plataforma de Visitantes. Usamos microservizos Spring Boot baseados en Java para expoñer a plataforma aos nosos clientes. Isto está implantado en AWS ECS Fargate. Executamos Apache Spark en Kubernetes para os nosos traballos diarios de retención de datos, os nosos traballos fóra de liña a en liña. Entón usamos eses traballos para cargar datos do noso almacén de datos fóra de liña en ScyllaDB para que estean dispoñibles no sitio en directo. Tamén usamos Amazon Kinesis para procesar eventos de seguimento de usuarios en streaming. O fluxo de datos da plataforma de visitantes O seguinte gráfico mostra como os datos flúen a través da nosa plataforma en catro etapas: producir, inxerir, organizar e activar. Os datos son producidos polo noso sitio web e as nosas aplicacións móbiles. Algúns destes datos inclúen o noso Gráfico de Identidade de Usuario Cross-Device, eventos de seguimento de comportamento (como as vistas e os clics de páxina) e eventos de transmisión que pasan a través de Kinesis. Os microservizos da Plataforma Visitor utilízanse para inxerir e organizar estes datos.Os datos en ScyllaDB almacénanse en dous espazos clave: O espazo clave do núcleo do visitante, que contén o gráfico de identidade do visitante O espazo clave de Metría de Visitantes, que contén feitos e métricas (as cousas que as persoas fixeron ao navegar polo sitio) Usamos procesos ETL diarios para manter e limpar os datos na plataforma. producimos produtos de datos, estampados diariamente, no noso almacén de datos offline - onde están dispoñibles para outras integracións e outros tubos de datos para usar no seu procesamento. Aquí tes unha ollada á Plataforma de Visitantes polos números: Por que dúas bases de datos? A nosa base de datos en liña céntrase no tráfico do sitio en tempo real e en directo. ScyllaDB cumpre este papel proporcionando latencias moi baixas e alta capacidade de transmisión. Usamos TTLs a curto prazo para evitar que os datos na base de datos en liña crezan indefinidamente, e os nosos traballos de retención de datos aseguran que só gardamos datos de actividade do usuario para os visitantes reais. Tripadvisor.com recibe moito tráfico de bot, e non queremos almacenar os seus datos e tratar de personalizar os bots - así que borramos e limpar todos eses datos. O noso almacén de datos offline retén datos históricos usados para informar, crear outros produtos de datos e adestrar os nosos modelos ML. Non queremos que os procesos de datos offline a gran escala afecten o rendemento do noso sitio en directo, polo que temos dúas bases de datos separadas que se usan para dous propósitos diferentes. Plataforma de microservizos de visitantes Utilizamos 5 microservizos para a Plataforma de Visitantes: Visitor Core xestiona o gráfico de identidade de usuario entre dispositivos baseado en cookies e identificadores de dispositivos. Visitor Metric é o noso motor de consulta, e que nos ofrece a capacidade de expoñer feitos e métricas para visitantes específicos. usamos un idioma específico de dominio chamado linguaxe de consulta de visitantes, ou VQL. Este exemplo VQL permítelle ver os últimos feitos de clic de comercio nas últimas tres horas. Visitor Publisher e Visitor Saver xestionan o camiño de escritura, escribindo datos na plataforma. Ademais de gardar datos en ScyllaDB, tamén transmitimos datos ao almacén de datos offline. Visitor Composite simplifica a publicación de datos en tarefas de procesamento de lotes. Abstrae Visitor Saver e Visitor Core para identificar os visitantes e publicar feitos e métricas nunha única chamada de API. Roundtrip Microservizos Latency Este gráfico ilustra como as nosas latencias de microservizos permanecen estables ao longo do tempo. A latencia media é só 2,5 milisegundos, e o noso P999 é inferior a 12,5 milisegundos. Os nosos clientes de microservizos teñen requisitos estritos de latencia. 95% das chamadas deben completarse en 12 milisegundos ou menos. ScyllaDB Latency Páxina Aquí tes un resumo do rendemento de ScyllaDB en tres días. No seu pico, ScyllaDB está a xestionar 340.000 operacións por segundo (incluíndo escritos e lidos e borrados) e a CPU está a flutuar a tan só 21%. ScyllaDB ofrece microsegundos de escritura e milisegundos de lectura para nós.Este nivel de rendemento rápido é precisamente por iso que eliximos ScyllaDB. Particionamento de datos en ScyllaDB Esta imaxe mostra como particionamos os datos en ScyllaDB. O Visitor Metric Keyspace ten dúas táboas: Fact e Raw Metrics. A clave primaria na táboa Fact é Visitor GUID, Fact Type, e Created At Date. A clave de partición composta é o Visitor GUID e Fact Type. A clave de agrupación é Created At Date, o que nos permite clasificar datos en particións por data. A columna de atributos contén un obxecto JSON que representa o evento que ocorreu alí. Algúns exemplos de feitos son Termos de Busca, Vistas de Páxina e Reservas. Utilizamos a estratexia de compactación nivelada de ScyllaDB porque: É optimizado para consultas de rango Xestiona moi ben a alta cardinalidade É mellor para cargas de traballo pesadas de lectura, e temos aproximadamente 2-3X máis lecturas que escritas Por que ScyllaDB? A nosa solución foi orixinalmente construída usando Cassandra on-prem. Pero a medida que a escala aumentou, a carga operativa tamén. Requírese soporte de operacións dedicadas para que podamos xestionar as actualizacións da base de datos, copias de seguridade, etc. Ademais, a nosa solución require latencias moi baixas para os compoñentes principais. O noso sistema de xestión de identidade do usuario debe identificar ao usuario dentro de 30 milisegundos - e para a mellor personalización, esiximos que a nosa plataforma de seguimento de eventos responda en 40 milisegundos. É crucial que a nosa solución non bloquee a renderización da páxina, polo que os nosos SLAs son moi baixos. Realizamos unha proba de concepto con ScyllaDB e atopamos que o rendemento era moito mellor que Cassandra e a carga operativa foi eliminada. Queríamos unha opción totalmente xestionada, polo que migraron de Cassandra a ScyllaDB Cloud, seguindo unha estratexia de dobre escritura. que nos permitiu migrar con tempo de inactividade cero ao manexar 40.000 operacións ou solicitudes por segundo. Máis tarde, migraron de ScyllaDB Cloud para o modelo "Trae a túa propia conta" de ScyllaDB, onde podes ter o equipo de ScyllaDB para implantar a base de datos de ScyllaDB na túa propia conta AWS. Este diagrama mostra como é a implantación BYOA de ScyllaDB. No centro do diagrama, podes ver un clúster ScyllaDB de 6 nós que se executa en EC2. ScyllaDB Monitor ofrécenos taboleiros Grafana así como métricas Prometheus. ScyllaDB Manager coida da automatización da infraestrutura como a activación de copias de seguridade e reparacións. Con esta implantación, ScyllaDB podería ser co-localizado moi preto dos nosos microservizos para darnos latencias aínda máis baixas, así como moito maior rendemento e rendemento. En resumo, espero que agora teña unha mellor comprensión da nosa arquitectura, as tecnoloxías que alimentan a plataforma e como ScyllaDB xoga un papel crítico en permitirnos xestionar a escala extremadamente alta de TripAdvisor. Coñecendo a Cynthia Dunlop Cynthia é directora sênior de estratexia de contido en ScyllaDB. Escribiu sobre desenvolvemento de software e enxeñaría de calidade durante máis de 20 anos.