See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale आप किस तरह के यात्री हैं? Tripadvisor साइट के साथ बातचीत के तुरंत बाद इस का मूल्यांकन करने का प्रयास करता है, फिर आपको हर क्लिक पर अधिक से अधिक प्रासंगिक जानकारी प्रदान करता है - मिलिसी सेकंड के भीतर। इस लेख में, डीन पोलिन (Tripadvisor डेटा इंजीनियरिंग लीड एआई सेवाओं और उत्पादों टीम) इस व्यक्तिगतकरण को कैसे संचालित करते हैं, एक नज़र देता है. डीन वास्तविक समय में व्यक्तिगतकरण प्रदान करने में शामिल तकनीकी चुनौतियों का एक स्वाद साझा करता है। यह निम्नलिखित AWS re:Invent talk पर आधारित है: प्री-ट्रिप मार्गदर्शन डेन के शब्दों में... 2000 में स्थापित, Tripadvisor यात्रा और आतिथ्य में एक वैश्विक नेता बन गया है, सैकड़ों मिलियन यात्रियों को अपनी सही यात्रा की योजना बनाने में मदद करता है. Tripadvisor $ 1.8 बिलियन से अधिक की आय उत्पन्न करता है और NASDAQ एक्सचेंज पर एक सार्वजनिक रूप से शेयर की गई कंपनी है. आज, हमारे पास 2,800 से अधिक प्रतिभागियों की प्रतिभाशाली टीम है जो नवाचार को बढ़ावा देती है, और हमारी प्लेटफॉर्म प्रति माह 400 मिलियन अद्वितीय आगंतुकों की सेवा करती है – एक संख्या जो लगातार बढ़ रही है। किसी भी दिन, हमारे सिस्टम 25 से 50 मिलियन उपयोगकर्ताओं से 2 अरब से अधिक अनुरोधों को संसाधित करता है। प्रत्येक क्लिक जो आप Tripadvisor पर करते हैं, को वास्तविक समय में संसाधित किया जाता है। इसके पीछे, हम मशीन लर्निंग मॉडल का लाभ उठाते हैं ताकि आप उस आदर्श यात्रा के करीब पहुंच सकें। इस व्यक्तिगतकरण इंजन के दिल में ScyllaDB एडब्ल्यूएस पर चलता है। . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds मैं साझा करूंगा कि Tripadvisor प्रत्येक उपयोगकर्ता के लिए व्यक्तिगत सिफारिशें वितरित करने के लिए ScyllaDB, AWS, और वास्तविक समय मशीन सीखने की शक्ति का उपयोग कैसे कर रहा है. हम पता लगाएंगे कि हम यात्रियों को अपनी सही यात्रा की योजना बनाने के लिए आवश्यक सब कुछ कैसे खोजने में मदद करते हैं: चाहे यह छिपे हुए गहने, देखने के लिए आवश्यक आकर्षण, अविस्मरणीय अनुभव, या रहने और खाने के लिए सर्वश्रेष्ठ स्थानों का पता लगाने के बारे में है. यह [पत्र] उस के पीछे इंजीनियरिंग के बारे में है - हम वास्तविक समय में उपयोगकर्ताओं को सुसज्जित, प्रासंगिक सामग्री कैसे वितरित करते हैं, उन्हें यथासंभव तेजी से खोजने में मदद करते हैं। व्यक्तिगत यात्रा योजना कल्पना कीजिए कि आप एक यात्रा की योजना बना रहे हैं. जैसे ही आप Tripadvisor होम पेज पर उतरते हैं, Tripadvisor पहले से ही जानता है कि क्या आप एक खाद्य, एक साहसिक या एक समुद्र तट प्रेमी हैं - और आप स्पॉट-ऑन सिफारिशें देख रहे हैं जो आपके स्वयं के हितों के लिए व्यक्तिगत लगती हैं। जब आप Tripadvisor के आसपास ब्राउज़ करते हैं, तो हम मशीन लर्निंग मॉडल का उपयोग करके जो आप देखते हैं, व्यक्तिगत रूप से शुरू करते हैं जो आपके वर्तमान और पिछले ब्राउज़िंग गतिविधि के आधार पर स्कोर की गणना करते हैं. हम उन होटलों और अनुभवों की सिफारिश करते हैं जिनमें हम मानते हैं कि आप रुचि रखते हैं. हम आपके व्यक्तिगत प्राथमिकताओं के आधार पर होटलों को वर्गीकृत करते हैं. हम आपके द्वारा देखी जाने वाली होटल के पास लोकप्रिय रुचि के बिंदु की सिफारिश करते हैं. ये सभी आपकी व्यक्तिगत प्राथमिकताओं और पिछले ब्राउज़िंग गतिविधि के आधार पर समायोजित हैं. Tripadvisor के मॉडल सर्विंग आर्किटेक्चर Tripadvisor Kubernetes on-prem और Amazon EKS में सैकड़ों स्वतंत्र रूप से स्केलेबल माइक्रो सेवाओं पर चलता है. हमारे एमएल मॉडल सर्विंग प्लेटफॉर्म इन माइक्रो सेवाओं में से एक के माध्यम से प्रकट होते हैं. यह गेटवे सेवा क्लाइंट सर्विस से 100 से अधिक एमएल मॉडल निकालती है – जो हमें हमारे प्रयोग प्लेटफॉर्म का उपयोग करके सर्वश्रेष्ठ मॉडल खोजने के लिए ए / बी परीक्षण चलाने की अनुमति देता है. एमएल मॉडल मुख्य रूप से हमारे डेटा वैज्ञानिकों और मशीन लर्निंग इंजीनियरों द्वारा Kubeflow पर जुपीटर नोटबुक का उपयोग करके विकसित किए जाते हैं. वे एमएल फ्लो का उपयोग करके प्रबंधित और प्रशिक्षित किए जाते हैं, और हम उन्हें Kubernetes में सेल्डन कोर पर तैनात करते हैं. हमारे कस्टम फ़ीचर स्टोर हमारे एमएल मॉडल के लिए सुविधाएं प्रदान करते हैं, जो उन्हें सटीक पूर्वानुमान बनाने की अनुमति देते हैं. Custom Feature की दुकान फ़ीचर स्टोर मुख्य रूप से उपयोगकर्ता सुविधाओं और स्थिर सुविधाओं की सेवा करता है. स्थिर सुविधाओं को रेडीस में संग्रहीत किया जाता है क्योंकि वे बहुत बार नहीं बदलते हैं. हम प्रतिदिन डेटा पाइपलाइन चलाते हैं ताकि हमारे ऑफ़लाइन डेटा स्टोर से डेटा को हमारे फ़ीचर स्टोर में स्थिर सुविधाओं के रूप में लोड किया जा सके. उपयोगकर्ता सुविधाएं वास्तविक समय में Visitor Platform नामक एक प्लेटफॉर्म के माध्यम से वितरित की जाती हैं. हम ScyllaDB के खिलाफ गतिशील CQL पूछताछ निष्पादित करते हैं, और . we do not need a caching layer because ScyllaDB is so fast हमारी फ़ीचर स्टोर प्रति सेकंड 5 मिलियन स्टैटिक फ़ीचर और प्रति सेकंड आधा मिलियन उपयोगकर्ता फ़ीचर प्रदान करती है। ML Feature क्या है? विशेषताएं एमएल मॉडल के लिए इनपुट परिवर्तनीय हैं जो एक पूर्वानुमान बनाने के लिए उपयोग की जाती हैं. There are Static Features and User Features. स्टेटिक सुविधाओं के कुछ उदाहरण पुरस्कार हैं जिन्हें एक रेस्तरां ने जीत लिया है या एक होटल द्वारा पेश किए गए सुविधाएं (जैसे मुफ्त वाई-फाई, पालतू अनुकूल या फिटनेस सेंटर)। उपयोगकर्ता सुविधाएं वास्तविक समय में एकत्र की जाती हैं क्योंकि उपयोगकर्ता साइट पर ब्राउज़ करते हैं. हम उन्हें ScyllaDB में संग्रहीत करते हैं ताकि हम त्वरित पूछताछ प्राप्त कर सकें. उपयोगकर्ता सुविधाओं के कुछ उदाहरण पिछले 30 मिनटों में देखे गए होटल, पिछले 24 घंटों में देखे गए रेस्तरां, या पिछले 30 दिनों में भेजे गए समीक्षाएं हैं. प्रौद्योगिकी आगंतुक प्लेटफॉर्म ScyllaDB विज़िटर प्लेटफॉर्म के कोर में है। हम अपनी प्लेटफॉर्म को अपने ग्राहकों को प्रदर्शित करने के लिए जावा-आधारित स्प्रिंग बूट माइक्रोसेस का उपयोग करते हैं. यह AWS ECS Fargate पर लागू होता है. हम अपने दैनिक डेटा भंडारण कार्यों के लिए Kubernetes पर Apache Spark चलाते हैं, हमारे ऑफ़लाइन को ऑनलाइन काम करते हैं. फिर हम उन कार्यों का उपयोग हमारे ऑफ़लाइन डेटा स्टोर से डेटा को ScyllaDB में लोड करने के लिए करते हैं ताकि वे लाइव साइट पर उपलब्ध हों. हम स्ट्रीमिंग उपयोगकर्ता ट्रैकिंग घटनाओं को संसाधित करने के लिए अमेज़ॅन Kinesis का भी उपयोग करते हैं. विज़िटर प्लेटफॉर्म डेटा प्रवाह निम्नलिखित ग्राफिक्स दिखाता है कि कैसे डेटा चार चरणों में हमारे प्लेटफॉर्म के माध्यम से प्रवाह करता है: उत्पादन, अवशोषित, संगठित और सक्रिय। डेटा हमारे वेबसाइट और हमारे मोबाइल ऐप्स द्वारा उत्पादित किया जाता है. उनमें से कुछ डेटा में हमारे क्रॉस-डिव्यूल उपयोगकर्ता पहचान ग्राफ, व्यवहार ट्रैकिंग घटनाएं (जैसे पेज दृश्य और क्लिक) और स्ट्रीमिंग घटनाएं शामिल हैं जो किनेसिस के माध्यम से चलती हैं. इसके अलावा, दर्शकों का विभाजन हमारे प्लेटफॉर्म में लोड किया जाता है. Visitor Platform के microservices इन डेटा को इंजेक्शन और व्यवस्थित करने के लिए उपयोग किए जाते हैं. ScyllaDB में डेटा को दो keyspaces में संग्रहीत किया जाता है: Visitor Core keyspace, जिसमें Visitor Identity Graph शामिल है विज़िटर मीट्रिक कीबोर्ड स्पेस, जिसमें तथ्य और मीट्रिक होते हैं (वे लोग जो चीजें करते थे जब वे साइट पर ब्राउज़ करते थे) हम प्लेटफ़ॉर्म में डेटा को बनाए रखने और साफ करने के लिए दैनिक ईटीएल प्रक्रियाओं का उपयोग करते हैं. हम डेटा उत्पादों का उत्पादन करते हैं, दैनिक रूप से स्टैम्प करते हैं, हमारे ऑफ़लाइन डेटा गोदाम में - जहां वे अन्य एकीकरणों और अन्य डेटा पाइपलाइनों के लिए उनके प्रसंस्करण में उपयोग के लिए उपलब्ध हैं। यहां संख्याओं द्वारा आगंतुकों की प्लेटफॉर्म की एक नज़र है: दो डेटाबेस क्यों? हमारा ऑनलाइन डेटाबेस वास्तविक समय, लाइव वेबसाइट ट्रैफ़िक पर केंद्रित है. ScyllaDB बहुत कम देरी और उच्च प्रवाह प्रदान करके इस भूमिका को पूरा करता है. हम ऑनलाइन डेटाबेस में डेटा को असीमित समय तक बढ़ने से रोकने के लिए कम अवधि के TTL का उपयोग करते हैं, और हमारे डेटा भंडारण कार्य सुनिश्चित करते हैं कि हम केवल वास्तविक आगंतुकों के लिए उपयोगकर्ता गतिविधि डेटा रखते हैं. Tripadvisor.com बहुत सारे बॉट ट्रैफ़िक प्राप्त करता है, और हम उनके डेटा को संग्रहीत नहीं करना चाहते हैं और बॉट को व्यक्तिगत बनाने की कोशिश करते हैं - इसलिए हम सभी डेटा को हटाते हैं और साफ करते हैं। हमारे ऑफ़लाइन डेटा स्टोर रिपोर्टिंग, अन्य डेटा उत्पादों का निर्माण करने और हमारे एमएल मॉडल को प्रशिक्षित करने के लिए इस्तेमाल किए गए ऐतिहासिक डेटा को संग्रहीत करता है. हम बड़े पैमाने पर ऑफ़लाइन डेटा प्रक्रियाओं को हमारे लाइव साइट के प्रदर्शन को प्रभावित नहीं करना चाहते हैं, इसलिए हमारे पास दो अलग-अलग डेटाबेस हैं जो दो अलग-अलग उद्देश्यों के लिए उपयोग किए जाते हैं. Microservices प्लेटफॉर्म हम Visitor Platform के लिए 5 microservices का उपयोग करते हैं: Visitor Core कुकीज़ और डिवाइस आईडी के आधार पर क्रॉस डिवाइस उपयोगकर्ता पहचान ग्राफ का प्रबंधन करता है। Visitor Metric हमारे पूछताछ इंजन है, और यह हमें विशिष्ट आगंतुकों के लिए तथ्यों और मीट्रिक को प्रकट करने की क्षमता प्रदान करता है. हम एक डोमेन विशिष्ट भाषा का उपयोग करते हैं जिसे visitor query language, या VQL कहा जाता है. इस उदाहरण में VQL आपको पिछले तीन घंटों में नवीनतम व्यापार क्लिक तथ्यों को देखने देता है. Visitor Publisher और Visitor Saver लिखने के मार्ग को संभालते हैं, डेटा को मंच में लिखते हैं. ScyllaDB में डेटा को सहेजने के अलावा, हम ऑफ़लाइन डेटा स्टोरेज में भी डेटा स्ट्रीमिंग करते हैं. यह Amazon Kinesis के साथ किया जाता है. Visitor Composite बैच प्रसंस्करण कार्यों में डेटा प्रकाशित करना सरल बनाता है. यह Visitor Saver और Visitor Core को एकल API कॉल में आगंतुकों की पहचान करने और तथ्यों और मीट्रिक को प्रकाशित करने के लिए अवलोकन करता है. Roundtrip Microservice लाइटेंसी यह चार्ट दर्शाता है कि हमारे माइक्रोसेस लाटेन्स समय के साथ स्थिर कैसे रहते हैं। औसत लाटेनता केवल 2.5 मिलीसेकंड है, और हमारे P999 12.5 मिलीसेकंड से कम है. यह एक प्रभावशाली प्रदर्शन है, खासकर जब हम प्रति दिन 1 अरब से अधिक अनुरोधों को संभालते हैं। हमारे माइक्रोसेस क्लाइंट्स के पास सख्त लाटेंशन आवश्यकताएं हैं. 95% कॉल को 12 मिली सेकंड या उससे कम में पूरा करना चाहिए. यदि वे उस पर चले जाते हैं, तो हमें पेजिंग करनी होगी और यह पता लगाना होगा कि लाटेंशन को क्या प्रभावित करता है. ScyllaDB लाटेंसी यहाँ तीन दिनों में ScyllaDB के प्रदर्शन का एक स्नैपशॉट है। चोटी पर, ScyllaDB प्रति सेकंड 340,000 ऑपरेशनों को संभाल रहा है (जिसमें लिखता है और पढ़ता है और हटाता है) और सीपीयू केवल 21% पर झुक रहा है। ScyllaDB हमारे लिए माइक्रोसेकंड लिखता है और मिलीसेकंड पढ़ता है. इस स्तर की तेज गतिशील प्रदर्शन यही कारण है कि हमने ScyllaDB चुना। ScyllaDB में डेटा विभाजित करना यह छवि दिखाती है कि हम ScyllaDB में डेटा कैसे विभाजित करते हैं। Visitor Metric Keyspace में दो टेबल हैं: Fact और Raw Metrics. Fact टेबल पर मुख्य कुंजी Visitor GUID, Fact Type, and Created At Date है. Composite Partition key is the Visitor GUID and Fact Type. Clustering key is Created At Date, जो हमें तारीख के अनुसार विभाजनों में डेटा को वर्गीकृत करने की अनुमति देता है. Attributes column contains a JSON object representing the event that occurred there. Some example Facts are Search Terms, Page Views, and Bookings. हम ScyllaDB की Leveled Compaction रणनीति का उपयोग करते हैं क्योंकि: यह सीमा पूछताछ के लिए अनुकूलित है यह उच्च कार्डिनलिटी को बहुत अच्छी तरह से संभालता है यह पढ़ने के लिए भारी कार्य भार के लिए बेहतर है, और हमारे पास लिखने की तुलना में लगभग 2-3 गुना अधिक पढ़ा जाता है क्यों ScyllaDB? हमारे समाधान को मूल रूप से Cassandra on-prem का उपयोग करके बनाया गया था. लेकिन जैसा कि पैमाने में वृद्धि हुई, ऑपरेटिंग बोझ भी बढ़ी. यह हमें डेटाबेस अद्यतनों, बैकअप आदि का प्रबंधन करने के लिए समर्पित ऑपरेशन समर्थन की आवश्यकता थी. इसके अलावा, हमारे समाधान को कोर घटकों के लिए बहुत कम लाने की आवश्यकता होती है. हमारे उपयोगकर्ता पहचान प्रबंधन प्रणाली को 30 मिलीसेकंड के भीतर उपयोगकर्ता की पहचान करनी चाहिए – और सर्वोत्तम व्यक्तिगतता के लिए, हमें अपने घटना ट्रैकिंग प्लेटफॉर्म को 40 मिलीसेकंड में जवाब देने की आवश्यकता होती है. यह महत्वपूर्ण है कि हमारे समाधान पृष्ठ rendering को अवरुद्ध नहीं करते हैं ताकि हमारे एसएलए बहुत कम हों. Cassandra के साथ, हमारे पास कचरे संग्र हमने ScyllaDB के साथ एक Proof of Concept चलाया और पाया कि पारगमन कैसेंड्रा की तुलना में बहुत बेहतर था और ऑपरेटिंग बोझ को खत्म किया गया था. ScyllaDB ने हमें सबसे कम संभव देरी के साथ एक अविश्वसनीय रूप से तेज़ लाइव सर्विंग डेटाबेस दिया। हम एक पूरी तरह से प्रबंधित विकल्प चाहते थे, इसलिए हमने एक डबल लिखने की रणनीति का पालन करते हुए Cassandra से ScyllaDB क्लाउड में स्थानांतरित किया. जिससे हमें प्रति सेकंड 40,000 ऑपरेशन या अनुरोधों को संभालते हुए शून्य अपटाइम के साथ स्थानांतरण करने की अनुमति मिली. बाद में, हमने ScyllaDB क्लाउड से ScyllaDB के "अपने खाते को लाएं" मॉडल में स्थानांतरण किया, जहां आप ScyllaDB टीम को अपने AWS खाते में ScyllaDB डेटाबेस को डिप्लोमा कर सकते हैं. इसने हमें बेहतर प्रदर्शन और बेहतर डेटा गोपनीयता दिया. यह चार्ट दिखाता है कि ScyllaDB की BYOA तैनाती कैसी दिखती है। चार्ट के केंद्र में, आप एक 6 नोड्स ScyllaDB क्लस्टर देख सकते हैं जो EC2 पर चल रहा है। ScyllaDB मॉनिटर हमें Grafana डैशबोर्ड और Prometheus मीट्रिक्स देता है। ScyllaDB प्रबंधक बुनियादी ढांचे के स्वचालन की देखभाल करता है जैसे बैकअप और मरम्मत को शुरू करना। इस तैनाती के साथ, ScyllaDB को हमारे माइक्रोसेवेज के बहुत करीब रखा जा सकता है ताकि हमें और भी कम लाटेन्स और बहुत अधिक पारगमन और प्रदर्शन मिल सके। संक्षेप में, मुझे उम्मीद है कि आपके पास अब हमारी वास्तुकला, उन प्रौद्योगिकियों की बेहतर समझ है जो प्लेटफॉर्म को संचालित करते हैं, और कैसे ScyllaDB हमें Tripadvisor के अत्यधिक बड़े पैमाने पर संभालने की अनुमति देने में महत्वपूर्ण भूमिका निभाता है। Cynthia Dunlop के बारे में राय Cynthia ScyllaDB में सामग्री रणनीति के वरिष्ठ निदेशक है. वह 20 से अधिक वर्षों से सॉफ्टवेयर विकास और गुणवत्ता इंजीनियरिंग के बारे में लिख रहा है।