See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Tripadvisor, siteye katıldığınızda bunu değerlendirmeye çalışır, ardından her tıklamada size her millisekundada daha fazla ilgili bilgi sunar.Bu kişiselleştirme, AWS'de çalışan ScyllaDB'de depolanan veriler üzerinde hareket eden gelişmiş ML modelleriyle desteklenir. Bu makalede, Dean Poulin (Tripadvisor veri mühendisliği lideri, AI Hizmetleri ve Ürünleri ekibi) bu kişiselleştirmeyi nasıl güçlendireceğine bir göz atıyor. AWS re:Invent Talk’a göre: Yolculuk öncesi yönlendirme Dean’ın sözleriyle... 2000 yılında kurulan Tripadvisor, yüzlerce milyon yolcunun mükemmel seyahatlerini planlamalarına yardımcı olan seyahat ve misafirperverlik alanında küresel bir lider haline gelmiştir. Tripadvisor 1,8 milyar doların üzerinde gelir elde ediyor ve NASDAQ borsasında kamuya satılan bir şirkettir. Bugün, 2.800'den fazla yetenekli bir ekibimiz var ve platformumuz ayda 400 milyon benzersiz ziyaretçiye hizmet veriyor. Her gün, sistemimiz 25 ila 50 milyon kullanıcıdan 2 milyardan fazla isteği işler. Tripadvisor'da yaptığınız her tıklama gerçek zamanlı olarak işlenir. Bunun arkasında, kişiselleştirilmiş tavsiyeler sunmak için makine öğrenimi modellerini kullanıyoruz - sizi mükemmel yolculuğa yaklaştıracağız. Bu kişiselleştirme motorunun kalbinde ScyllaDB AWS'de çalışıyor. Bu, çok az organizasyonun ulaşabileceği bir ölçekte millisecond latency sunmamızı sağlar. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds Her kullanıcı için kişiselleştirilmiş öneriler sunmak için TripAdvisor'ın ScyllaDB, AWS ve gerçek zamanlı makine öğrenimi gücünü nasıl kullandığını paylaşacağım. yolcuların mükemmel seyahatlerini planlamak için gereken her şeyi keşfetmelerine nasıl yardımcı olacağımızı keşfedeceğiz: gizli mücevherleri keşfetmek, görmeniz gereken yerler, unutulmaz deneyimler veya kalmak ve yemek için en iyi yerler. Kişiselleştirilmiş Trip Planlama Bir gezi planladığınızı hayal edin. Tripadvisor ana sayfasına ulaştığınızda, Tripadvisor zaten bir yemek sever, maceracı veya plaj sever olup olmadığını biliyor - ve kendi ilgi alanlarınıza göre kişiselleştirilmiş görünen spot-on önerileri görüyorsunuz. Tripadvisor'ı gezdiğinizde, mevcut ve önceki tarama aktivitelerinize göre puanları hesaplayan Makine Öğrenimi modelleriyle gördüğünüz şeyi kişiselleştirmeye başlıyoruz. İlginizi çekeceğini düşündüğünüz otelleri ve deneyimleri öneririz. Kişisel tercihlerinize göre otelleri sıraladık. Gördüğünüz otelin yakınında popüler ilgi noktaları öneririz. Bunların hepsi kendi kişisel tercihlerinize ve önceki tarama aktivitelerinize göre ayarlanmıştır. TRIPADVISOR ARCHITECTURY İÇİN BİLGİLER Tripadvisor, Kubernetes on-prem ve Amazon EKS'de yüzlerce bağımsız olarak ölçeklenebilir mikroservisi üzerinde çalışır. Bu kapı hizmeti, 100'den fazla ML Modeli'ni Müşteri Hizmetleri'nden özetler - bu da deney platformumuzdan en iyi modeller bulmak için A/B testlerini çalıştırmamızı sağlar. ML Modeller, öncelikle veri bilimcilerimiz ve makine öğrenimi mühendislerimiz tarafından Jupyter Notebooks'ta Kubeflow'da kullanılarak geliştirilmiştir. Bunlar ML Flow kullanılarak yönetilir ve eğitilir ve Kubernetes'te Seldon Core'da dağıtılırız. Özelleştirilmiş Özellik Mağazamız, ML Modellerimize özellikler sunar ve doğru tahminler yapmalarına olanak sağlar. Custom Feature Mağazası Özellik Mağazası, öncelikle Kullanıcı Özellikleri ve İstatik Özellikleri sunar. İstatik Özellikler, çok sık değişmezler çünkü Redis'te depolanır. Günlük olarak veri boruları çalıştırırız ve çevrimdışı veri depolarımızdan istatiksel Özellikler olarak Özellik Mağazamız'a veri yükleriz. Kullanıcı Özellikleri, Visitor Platform adı verilen bir platform aracılığıyla gerçek zamanlı olarak sunulmaktadır. Biz ScyllaDB ile dinamik CQL sorgularını yürütmek, ve . we do not need a caching layer because ScyllaDB is so fast Özellik Mağazamız saniyede 5 milyon Statik Özellik ve saniyede yarım milyon Kullanıcı Özellik sunar. ML özelliği nedir? Özellikler, bir tahmin yapmak için kullanılan ML Modellerine girilen değişkenlerdir.Statik Özellikler ve Kullanıcı Özellikler vardır. Statik Özelliklerin bazı örnekleri, bir restoranın kazandığı ödüller veya bir otel tarafından sunulan rahatlıklar (örneğin ücretsiz Wi-Fi, evcil hayvan dostu veya fitness merkezi). Kullanıcı Özellikleri, kullanıcıların sitede gezinirken gerçek zamanlı olarak toplanır. Bunları ScyllaDB'de depoluyoruz, böylece hızlı sorgular alabiliriz. Bazı kullanıcı özelliklerinin örnekleri son 30 dakikada görüntülenen oteller, son 24 saatte görüntülenen restoranlar veya son 30 günde gönderilen yorumlardır. Ziyaretçi Platformunu Güçlendiren Teknolojiler ScyllaDB, Ziyaretçi Platformunun merkezinde yer almaktadır. Platformu müşterilerimize sunmak için Java tabanlı Spring Boot microservices'leri kullanıyoruz. Bu AWS ECS Fargate'de dağıtılır. Günlük veri saklama işlerimiz için Kubernetes'te Apache Spark'ı çalıştırıyoruz, çevrimdışı ve çevrimiçi işlerimiz. Sonra bu işleri kullanarak çevrimdışı veri depolarımızdan verileri ScyllaDB'ye yükleyerek canlı sitede kullanılabilir hale getiriyoruz. Ayrıca, kullanıcı izleme olaylarının akışını işlemek için Amazon Kinesis'i de kullanıyoruz. Ziyaretçi Platformu Veri Akışı Aşağıdaki grafik, verilerin platformumuzda dört aşamada nasıl aktarıldığını göstermektedir: üretmek, tüketmek, organize etmek ve etkinleştirmek. Veriler web sitemiz ve mobil uygulamalarımız tarafından üretilir. Bu verilerin bir kısmı Cross-Device Kullanıcı Kimlik Grafi, Davranış İzleme olayları (sayfa görüntüleri ve tıklamalar gibi) ve Kinesis aracılığıyla geçen akış olayları içerir. Visitor Platform’un mikroservisi bu verileri içermek ve düzenlemek için kullanılır. ScyllaDB’deki veriler iki anahtar alanında depolanır: Ziyaretçi Kimlik Grafiği içeren Ziyaretçi Ana anahtar alanı Gerçekleri ve Ölçüleri içeren Ziyaretçi Metrik anahtar alanı (insanların siteyi gezerken yaptıkları şeyler) Platformdaki verileri korumak ve temizlemek için günlük ETL süreçlerini kullanırız. Günlük olarak baskılandırılmış veri ürünlerini çevrimdışı veri depolarımızda üretiyoruz - diğer entegrasyonlar ve diğer veri borularının işlenmesinde kullanılabilecek olduğu yerlerde. İşte sayılara göre ziyaretçi platformuna bir göz atın: Neden iki veri tabanı? Online veritabanımız gerçek zamanlı, canlı web sitesi trafiğine odaklanır. ScyllaDB bu rolü çok düşük gecikmeler ve yüksek geçiş sağlar. Online veritabanındaki verilerin sonsuza dek büyümesini önlemek için kısa süreli TTL'ler kullanırız ve veri saklama işlerimiz, yalnızca gerçek ziyaretçiler için kullanıcı etkinliği verilerini sakladığımızdan emin olur. Tripadvisor.com çok fazla bot trafiği alır ve verilerini depolamak ve botları kişiselleştirmeye çalışmak istemiyoruz - bu yüzden tüm bu verileri siliyoruz ve temizliyoruz. Çevrimdışı veri depolarımız, raporlama, diğer veri ürünleri oluşturma ve ML Modellerimizi eğitmek için kullanılan tarihsel verileri saklar. Canlı sitemizin performansını etkileyen büyük ölçekli çevrimdışı veri süreçlerini istemiyoruz, bu nedenle iki farklı amaç için kullanılan iki ayrı veritabanımız var. Microservices ziyaretçi platformları Ziyaretçi Platformu için 5 mikroservisi kullanıyoruz: Visitor Core, çerezler ve cihaz kimlikleri temelinde cihazlar arası kullanıcı kimlik grafiklerini yönetir. Ziyaretçi Ölçümü sorgulama motorumuzdur ve bu bize belirli ziyaretçiler için gerçekleri ve ölçütleri ortaya çıkarma yeteneğini sağlar. Ziyaretçi sorgulama dili veya VQL olarak adlandırılan bir alan adı verilen bir dil kullanırız. Visitor Publisher ve Visitor Saver yazma yolunu yönetir, verileri platformuna yazar. ScyllaDB'de veri kaydetmenin yanı sıra, verileri çevrimdışı veri depolama alanına da aktarırız. Visitor Composite, ziyaretçileri tanımlamak ve gerçekleri ve ölçütleri tek bir API çağrısında yayınlamak için Visitor Saver ve Visitor Core'ı özetler. Roundtrip Microservice Latency Hakkında Bu grafik, mikroservisi gecikmelerimizin zaman içinde nasıl istikrarlı kalacağını göstermektedir. Ortalama gecikme sadece 2.5 milisekundur ve P999'umuz 12,5 milisekundur. Mikroservice müşterilerimizde sıkı gecikme gereksinimleri vardır. çağrıların% 95'inin 12 milisekundaki veya daha az bir sürede tamamlanması gerekir. ScyllaDB Latency Hakkında İşte ScyllaDB'nin üç günlük performansının bir animasyonu. En yüksek seviyede, ScyllaDB saniyede 340.000 işlem yapıyor (yazma, okuma ve silme dahil) ve CPU yalnızca %21'de dalgalanıyor. ScyllaDB, bizim için mikrosekundaki yazılar ve milisekundaki okumalar sunar. ScyllaDB'ye veri bölünmesi Bu görüntü, verilerin ScyllaDB'ye nasıl bölündüğünü göstermektedir. Visitor Metric Keyspace, iki tabloya sahiptir: Fact ve Raw Metrics. Fact tablosundaki ana anahtar, Visitor GUID, Fact Type ve Created At Date'dir. Karmaşık bölünme anahtarı, Visitor GUID ve Fact Type'dir. Gruplandırma anahtarı, verileri bölünmeler halinde tarihe göre sıralamak için Created At Date'dir. Özellikler sütunu, orada meydana gelen olayı temsil eden bir JSON nesnesi içerir. Bazı örnek gerçekler, Arama Koşulları, Sayfa Görüntüleri ve Rezervasyonlardır. ScyllaDB'nin Leveled Compaction Stratejisini kullanıyoruz çünkü: Range Queries için optimize edilmiştir Yüksek kardinaliteyi çok iyi yönetir Okuma ağır iş yükleri için daha iyidir ve okuma sayısından 2-3 kat daha fazla var. Neden ScyllaDB? Çözümümüz başlangıçta Cassandra on-prem kullanılarak inşa edilmişti.Ama ölçeği arttıkça işletme yükü de arttı.Bizim veritabanı yükseltmeleri, yedeklemeyi vb. yönetmemiz için özel operasyon desteği gerekiyordu.Ayrıca, çözümümüz çekirdek bileşenler için çok düşük gecikmeler gerektirir.Kullanıcı Kimlik Yönetimi Sistemimiz, kullanıcıyı 30 milisekundaki bir süre içinde tanımlamalıydı – ve en iyi kişiselleştirme için, olay izleme platformumuzun 40 milisekundaki bir sürede yanıt vermesi gerekiyordu.Çözümümüzün sayfayı görüntülemeyi engellememesi önemlidir, bu yüzden SLA'larımız çok düşük.Cassandra ile, çöplük toplama performansına etki ettik.Bu ScyllaDB ile bir Proof of Concept çalıştı ve Cassandra'dan çok daha iyi olduğunu ve operasyonel yükü ortadan kaldırıldığını bulduk. Tamamen yönetilen bir seçenek istiyorduk, bu yüzden Cassandra'dan ScyllaDB Cloud'a geçiş yaptık, ikili yazma stratejisi uyguladık. Bu, saniyede 40.000 işlem veya isteği işlerken sıfır duraklama ile geçiş yapmamıza izin verdi. Daha sonra, ScyllaDB Cloud'dan ScyllaDB'nin "Kendi Hesabınızı Getirin" modeli'ne geçiş yaptık, burada ScyllaDB ekibinin ScyllaDB veritabanını kendi AWS hesabınıza dağıtmasını sağlayabilirsiniz. Bu grafik, ScyllaDB'nin BYOA dağıtımının nasıl göründüğünü gösterir. Diagramın merkezinde, EC2 üzerinde çalışan 6 düğümlü bir ScyllaDB kümesi görebilirsiniz. ScyllaDB Monitor bize Grafana panoları ve Prometheus metrikleri verir. ScyllaDB Manager, yedekleme ve onarım işlemi gibi altyapı otomasyonu ile ilgilenir. Bu dağıtımla, ScyllaDB, bize daha düşük gecikmeler ve çok daha yüksek geçiş ve performans sağlayacak şekilde mikro hizmetlerimize çok yakın yerleştirilebilir. Özetle, şimdi mimarlığımızı, platformu güçlendiren teknolojileri ve ScyllaDB'nin TripAdvisor'ın son derece yüksek ölçeğiyle başa çıkmamızı sağlamasında nasıl kritik bir rol oynadığını daha iyi anladığınızı umuyorum. Cynthia Dunlop Hakkında Cynthia, ScyllaDB'de içerik stratejisi üst düzey direktörüdür ve 20 yıldan fazla bir süredir yazılım geliştirme ve kalite mühendisliği hakkında yazıyor.