See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale آپ کس قسم کے مسافر ہیں؟ Tripadvisor اس کا اندازہ کرنے کی کوشش کرتا ہے جب آپ سائٹ کے ساتھ بات چیت کرتے ہیں، پھر آپ کو ہر کلک پر زیادہ سے زیادہ متعلقہ معلومات فراہم کرتا ہے - ملیس سیکنڈ کے اندر اندر. اس مضمون میں، ڈین Poulin (Tripadvisor ڈیٹا انجینئرنگ لیڈ میں AI سروس اور مصنوعات کی ٹیم) ان کی اپنی مرضی کے مطابق کس طرح ان کی اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مرضی کے مطابق اپنی مر یہ مندرجہ ذیل AWS re:Invent بات پر مبنی ہے: پیش سے طرف کی رہنمائی ڈین کے الفاظ میں... ٹریپڈویئر کس کا ہے، اور جس پیمانے پر ہم کام کرتے ہیں کے بارے میں ایک فوری نقطہ نظر سے شروع کریں. 2000 میں قائم کیا گیا، ٹریپویئر نے سفر اور ہوسٹنگ میں ایک عالمی رہنما بنائی ہے، ہزاروں مسافروں کو ان کے بہترین سفر کی منصوبہ بندی میں مدد کی ہے. ٹریپویئر میں $ 1.8 ارب سے زائد آمدنی ہے اور نیاسڈاک بورڈ پر عوامی طور پر ٹریڈنگ کی ایک کمپنی ہے. آج، ہم نے 2،800 سے زائد ملازمین کی ایک مہینہ میں 400 ملین منفرد زائرین کی خدمت کی ہے، جس کی تعداد مسلسل بڑھ رہی ہے. کسی بھی وقت، ہمارے نظام 25 سے 50 ملین صارفین سے 2 ارب سے زائد درخواستوں کا انتظام کرتا ہے. آپ Tripadvisor پر ہر کلکس کو حقیقی وقت میں پروسیسنگ کی جاتی ہے. اس کے پیچھے، ہم اپنی مرضی کے مطابق سفارشات فراہم کرنے کے لئے مشین سیکھنے کے ماڈل کا استعمال کرتے ہیں - آپ کو اس کامل سفر کے قریب پہنچانے کے لئے. اس اپنی مرضی کے مطابق ڈیزائن کے دل میں ScyllaDB AWS پر چلتا ہے. اس سے ہمیں ایک پیمانے پر ملیس سیکنڈ کی تاخیر فراہم کرنے کی اجازت دیتا ہے جو بہت کم تنظیموں تک پہنچتا ہے. . 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 میں سینکڑوں مستقل طور پر وسیع پیمانے پر مائیکرو سروسز پر چلتا ہے. ہمارے ML ماڈل سروسنگ پلیٹ فارم ان مائیکرو سروسز میں سے ایک کے ذریعے ظاہر ہوتا ہے. یہ گائیو سروس کسٹمر سروسز سے 100 سے زائد ML ماڈل نکالتا ہے - جس سے ہمیں ہماری تجرباتی پلیٹ فارم کا استعمال کرتے ہوئے بہترین ماڈل تلاش کرنے کے لئے A / B ٹیسٹ چلانے کی اجازت دیتا ہے. ML ماڈل بنیادی طور پر ہمارے ڈیٹا سائنسدانوں اور مشین سیکھنے کے انجینئرز کی طرف سے Kubeflow پر Jupyter نوٹ بکروں کا استعمال کرتے ہوئے تیار کیے جاتے ہیں. وہ ML Flow کا استعمال کرتے ہوئے انتظام اور تربیت دیتے ہیں، اور ہم Kubernetes میں Seldon Core پر ان کو اپ ڈیٹ کرتے ہیں. Custom Feature اسٹور خصوصیات سٹوریج بنیادی طور پر صارف خصوصیات اور سٹیٹک خصوصیات کی خدمت کرتا ہے. سٹیٹک خصوصیات کو ریڈیس میں ذخیرہ کیا جاتا ہے کیونکہ وہ بہت اکثر نہیں بدلتے ہیں. ہم ڈیٹا پائپ لائنز کو روزانہ چلانے کے لئے ہمارے آن لائن ڈیٹا سٹوریج سے ڈیٹا کو ہمارے خصوصیات سٹوریج میں سٹیٹک خصوصیات کے طور پر لوڈ کرتے ہیں. صارف خصوصیات کو ایک پلیٹ فارم کے ذریعے حقیقی وقت میں فراہم کیا جاتا ہے جو Visitor Platform کہا جاتا ہے.We execute dynamic CQL queries against ScyllaDB, and . we do not need a caching layer because ScyllaDB is so fast ہماری خصوصیات اسٹور فی سیکنڈ 5 ملین سٹیٹک خصوصیات اور فی سیکنڈ ایک ملین صارف خصوصیات تک فراہم کرتا ہے. ML کی خصوصیات کیا ہیں؟ خصوصیات ML ماڈل کے اندر اندرونی متغیر ہیں جو ایک پیش گوئی بنانے کے لئے استعمال کیا جاتا ہے. اسٹیٹک خصوصیات کے کچھ مثالیں ہیں جو ایک ریستوران نے جیت لیا ہے یا ہوٹل کی پیشکش کی سہولیات (جیسا کہ مفت Wi-Fi، پالتو جانوروں کے دوست یا فٹنس سینٹر). صارف خصوصیات کو حقیقی وقت میں جمع کیا جاتا ہے جب صارفین سائٹ پر براؤزر کرتے ہیں. ہم ان کو ScyllaDB میں ذخیرہ کرتے ہیں تاکہ ہم تیز رفتار سوالات حاصل کرسکتے ہیں. صارف خصوصیات کی کچھ مثالیں گزشتہ 30 منٹ میں دیکھا ہوٹل، گزشتہ 24 گھنٹے میں دیکھا ریستوران، یا گزشتہ 30 دنوں میں بھیجا جائزے ہیں. The Technologies Powering زائرین پلیٹ فارم ScyllaDB Visitor Platform کے کورس میں ہے. ہم اپنے گاہکوں کو پلیٹ فارم کو ظاہر کرنے کے لئے جاوا پر مبنی Spring Boot مائیکرو سروسز کا استعمال کرتے ہیں. یہ AWS ECS Fargate پر پلگ ان کیا جاتا ہے. ہم Kubernetes پر Apache Spark کو اپنے روزانہ ڈیٹا کی بحالی کے کاموں کے لئے چلاتے ہیں، ہماری آن لائن آن لائن کاموں کو. پھر ہم ان کاموں کو اپنے آن لائن ڈیٹا اسٹوریج سے ڈیٹا لوڈ کرنے کے لئے ScyllaDB میں استعمال کرتے ہیں تاکہ وہ لائیو سائٹ پر دستیاب ہوں. زائرین پلیٹ فارم ڈیٹا فلور مندرجہ ذیل گرافک دکھاتا ہے کہ کس طرح ڈیٹا ہماری پلیٹ فارم کے ذریعے چار مرحلے میں چلا جاتا ہے: پیدا کریں، جذب کریں، منظم کریں، اور فعال کریں. یہ ڈیٹا ہماری ویب سائٹ اور ہماری موبائل ایپلی کیشنز کی طرف سے پیدا کیا جاتا ہے. ان میں سے کچھ ڈیٹا ہمارے کرایہ ڈیوائس صارف شناخت گراف، رویے کی پیروی کے واقعات (جیسا کہ صفحے کی دیکھ بھال اور کلکنگ) اور سٹریمنگ واقعات بھی شامل ہیں جو Kinesis کے ذریعے گزر جاتے ہیں. Visitor Platform کے مائیکرو سروسز کو ان اعداد و شمار کو جمع کرنے اور منظم کرنے کے لئے استعمال کیا جاتا ہے. Visitor Core KeySpace، جس میں Visitor Identity Graph شامل ہے زائر میٹرک کیٹروپاس، جس میں حقائق اور میٹرک شامل ہیں (جس چیزوں کو لوگوں نے سائٹ پر پلگ ان کرتے وقت کیا) ہم پلیٹ فارم میں اعداد و شمار کو برقرار رکھنے اور صاف کرنے کے لئے روزانہ ETL پروسیسز کا استعمال کرتے ہیں. ہم ڈیٹا پروڈکٹ، روزانہ، ہمارے آن لائن ڈیٹا اسٹوریج میں تیار کرتے ہیں - جہاں وہ دیگر انضماموں اور دیگر ڈیٹا پائپ لائنز کو ان کے پروسیسنگ میں استعمال کرنے کے لئے دستیاب ہیں. یہاں تعداد کی طرف سے زائرین پلیٹ فارم کی ایک نظر ہے: دو ڈیٹا بیس کیوں؟ ہمارا آن لائن ڈیٹا بیس حقیقی وقت، لائیو ویب سائٹ ٹریفک پر توجہ مرکوز کرتا ہے. ScyllaDB بہت کم تاخیر اور اعلی ٹرانسپورٹ فراہم کرتے ہوئے اس کردار کو پورا کرتا ہے. ہم آن لائن ڈیٹا بیس میں اعداد و شمار کو لامحدود طور پر بڑھنے سے روکنے کے لئے مختصر مدت TTLs کا استعمال کرتے ہیں، اور ہمارے ڈیٹا کی بحالی کے کام اس بات کو یقینی بناتے ہیں کہ ہم صرف حقیقی زائرین کے لئے صارف کی سرگرمی کے اعداد و شمار کو برقرار رکھیں. Tripadvisor.com بہت سے بوٹ ٹریفک حاصل کرتا ہے، اور ہم ان کے اعداد و شمار کو ذخیرہ نہیں کرنا چاہتے ہیں اور بوٹس کو ذاتی بنانے کی کوشش کرتے ہیں - لہذا ہم تمام اعداد و شمار کو حذف اور صاف کرتے ہیں. ہماری آن لائن اعداد و شمار اسٹوریج رپورٹنگ، دیگر اعداد و شمار کی مصنوعات کی تخلیق، اور ہماری ML ماڈلوں کی تربیت کے لئے استعمال ہونے والے تاریخی اعداد و شمار کو برقرار رکھتا ہے. ہم بڑے پیمانے پر آن لائن اعداد و شمار کے عمل کو ہمارے لائیو سائٹ کی کارکردگی پر اثر انداز نہیں کرنا چاہتے ہیں، لہذا ہمارے پاس دو مختلف اعداد و شمار کے اعداد و شمار ہیں جو دو مختلف مقاصد کے لئے استعمال کیے جاتے ہیں. زائرین پلیٹ فارم مائیکروسافٹ ہم زائرین پلیٹ فارم کے لئے 5 مائیکرو سروسز استعمال کرتے ہیں: Visitor Core کو کوکیز اور آلہ ایڈز پر مبنی cross-device صارف شناخت گراف کا انتظام کرتا ہے. زائرین میٹرک ہماری درخواست کے انجن ہے، اور یہ ہمیں مخصوص زائرین کے لئے حقائق اور میٹرک کو ظاہر کرنے کی صلاحیت فراہم کرتا ہے. ہم زائرین کے سوالات کی زبان یا VQL کہا جاتا ہے کہ ایک ڈومین مخصوص زبان کا استعمال کرتے ہیں. Visitor Publisher اور Visitor Saver لکھنے کے راستے کا انتظام کرتے ہیں، ڈیٹا پلیٹ فارم میں لکھتے ہیں. ScyllaDB میں ڈیٹا بچانے کے علاوہ، ہم آن لائن ڈیٹا اسٹوریج میں بھی ڈیٹا اسٹوریج کرتے ہیں. Visitor Composite بیٹری پروسیسنگ کے کاموں میں اعداد و شمار کو شائع کرنے کی سہولت دیتا ہے. یہ ایک ہی API کال میں زائرین کی شناخت اور حقائق اور میٹرک کو شائع کرنے کے لئے Visitor Saver اور Visitor Core کو مختصر کرتا ہے. Roundtrip مائیکروسافٹ لٹینسی یہ گراف یہ دکھاتا ہے کہ ہماری مائیکروسافیسنگ کی تاخیر کس طرح وقت کے ساتھ مستحکم رہتی ہے. اوسط لمبائی صرف 2.5 ملیس سیکنڈ ہے، اور ہمارے P999 12.5 ملیس سیکنڈ سے کم ہے. یہ حیرت انگیز کارکردگی ہے، خاص طور پر جب ہم روزانہ 1 بلین سے زیادہ درخواستوں کا انتظام کرتے ہیں. ہمارے مائیکروسافٹ کسٹمرز کو سخت تاخیر کی ضروریات ہیں. 95% کالوں کو 12 ملیس سیکنڈ یا اس سے کم میں مکمل کرنا چاہئے. ScyllaDB لاٹینسی یہاں تین دنوں میں ScyllaDB کی کارکردگی کا ایک snapshot ہے. سب سے اوپر، ScyllaDB فی سیکنڈ 340،000 آپریشنز کا انتظام کر رہا ہے (جیسا کہ لکھتا ہے اور پڑھتا ہے اور حذف کرتا ہے) اور CPU صرف 21٪ میں گھوم رہا ہے. ScyllaDB ہمارے لئے مائکرو سیکنڈ لکھتا ہے اور مائکرو سیکنڈ پڑھتا ہے. ScyllaDB میں ڈیٹا کا اشتراک کریں یہ تصویر دکھاتا ہے کہ ہم ScyllaDB میں اعداد و شمار کیسے تقسیم کرتے ہیں. Visitor Metric Keyspace میں دو ٹیبلز ہیں: Fact اور Raw Metrics. Fact ٹیبل پر بنیادی کلید Visitor GUID، Fact Type، اور Created At Date ہے. مرکب پارٹیشن کلید Visitor GUID اور Fact Type ہے. گروپنگ کلید Created At Date ہے، جس سے ہم تاریخ کی طرف سے پارٹیشن میں ڈیٹا کو ترتیب دینے کی اجازت دیتا ہے. خصوصیات کالم میں وہاں ہونے والے واقعہ کی نمائندگی کرنے والے ایک JSON اشیاء شامل ہے. کچھ مثال حقائق Search Terms، Page Views، اور Bookings ہیں. ہم ScyllaDB کی سطح کمپریشن کی حکمت عملی کا استعمال کرتے ہیں کیونکہ: range queries کے لئے بہتر ہے یہ اعلی cardinality بہت اچھی طرح سے کام کرتا ہے یہ پڑھنے کے لئے زیادہ کام کرنے کے لئے بہتر ہے، اور ہم لکھنے کے مقابلے میں 2-3X زیادہ پڑھتے ہیں. کیوں ScyllaDB؟ ہمارا حل ابتدائی طور پر Cassandra on-prem کا استعمال کرتے ہوئے تعمیر کیا گیا تھا. لیکن پیمانے پر بڑھنے کے بعد، آپریٹنگ بوجھ بھی. یہ ہمیں ڈیٹا بیس اپ گریڈز، بیک اپ، وغیرہ کو منظم کرنے کے لئے وقفے کی حمایت کی ضرورت تھی. اس کے علاوہ، ہمارے حل کو بنیادی اجزاء کے لئے بہت کم تاخیر کی ضرورت ہے. ہمارے صارف شناختی مینجمنٹ سسٹم کو 30 ملی سیکنڈ کے اندر اندر صارف کی شناخت کرنا پڑتا ہے – اور بہترین ذاتی سازی کے لئے، ہم نے اپنے واقعات ٹریکنگ پلیٹ فارم کو 40 ملی سیکنڈ میں جواب دینے کی ضرورت ہے. یہ اہم ہے کہ ہماری حل صفحہ rendering کو بلاک نہیں کرتا، لہذا ہمارے ایس ایل اے بہت کم ہیں. ہم نے ScyllaDB کے ساتھ ایک Proof of Concept چلایا اور Cassandra سے بہت بہتر ہے اور آپریٹنگ بوجھ کو ہٹا دیا گیا تھا. ScyllaDB نے ہمیں کم از کم ممکنہ تاخیر کے ساتھ ایک بہت تیزی سے لائیو سروس ڈیٹا بیس فراہم کی. ہم مکمل طور پر انتظام شدہ اختیار چاہتے تھے، لہذا ہم نے ایک دوگنا لکھنے کی حکمت عملی کی پیروی کرتے ہوئے Cassandra سے ScyllaDB Cloud پر منتقل کیا. جس نے ہمیں ہر سیکنڈ میں 40،000 کارروائیوں یا درخواستوں کا انتظام کرتے ہوئے سٹیلڈے وقت کے ساتھ منتقل کرنے کی اجازت دی. بعد میں، ہم نے ScyllaDB Cloud سے ScyllaDB کی "آپ کے اپنے اکاؤنٹ لے لو" ماڈل پر منتقل کیا، جہاں آپ ScyllaDB ٹیم کو اپنے AWS اکاؤنٹ میں ScyllaDB ڈیٹا بیس کو اپ ڈیٹ کر سکتے ہیں. یہ گرافٹ دکھاتا ہے کہ ScyllaDB کی BYOA تنصیب کیسا لگتا ہے. ڈراگراف کے وسط میں، آپ ایک 6 نڈو ScyllaDB کسٹمر دیکھ سکتے ہیں جو EC2 پر چل رہا ہے. ScyllaDB Monitor ہمیں Grafana ڈسپلے اور Prometheus میٹرک فراہم کرتا ہے. ScyllaDB مینیجر سافٹ ویئر کے طور پر بیک اپ اور مرمتوں کو چالو کرنے کے طور پر انسٹالٹریٹ آٹومیشن کی دیکھ بھال کرتا ہے. اس تنصیب کے ساتھ، ScyllaDB ہمارے مائیکرو سروسز کے قریب بہت قریب واقع ہوسکتا ہے تاکہ ہم کو بھی کم تاخیر اور بہت زیادہ ٹرانسپورٹ اور کارکردگی فراہم کریں. خلاصہ، مجھے امید ہے کہ آپ اب ہماری آرکیٹیکل کے بارے میں بہتر سمجھتے ہیں، ٹیکنالوجی جو پلیٹ فارم کو طاقت کرتی ہیں، اور کس طرح ScyllaDB ہمیں Tripadvisor کے انتہائی بڑے پیمانے پر کام کرنے کی اجازت دینے میں اہم کردار ادا کرتا ہے. Cynthia Dunlop کے بارے میں Cynthia ScyllaDB میں مواد کی حکمت عملی کے سینئر ڈائریکٹر ہے. وہ 20 سال سے زیادہ کے لئے سافٹ ویئر کی ترقی اور معیار انجینئرنگ کے بارے میں لکھ رہا ہے.