See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale আপনি কোন ধরনের ভ্রমণকারী? ট্রিপডভাইজার আপনি সাইটের সাথে যোগাযোগ করার পরে এটি মূল্যায়ন করার চেষ্টা করে, তারপর প্রতিটি ক্লিকের সময় আপনাকে ক্রমবর্ধমানভাবে প্রাসঙ্গিক তথ্য সরবরাহ করে - মাইলস সেকেন্ডের মধ্যে। এই নিবন্ধে, ডিন পুলিন (ট্রিপ্যাডভাইজার ডেটা ইঞ্জিনিয়ারিং নেতৃস্থানীয় এআই সার্ভিস এবং পণ্য টিম) এই ব্যক্তিগতকরণ কীভাবে শক্তিশালী করে তা দেখায়. ডিন ট্রিপ্যাডভাইজারের বিশাল (এবং দ্রুত বৃদ্ধি পাওয়ার) পরিমাণে রিয়েল টাইম ব্যক্তিগতকরণ প্রদানের সাথে জড়িত প্রযুক্তিগত চ্যালেঞ্জগুলির একটি স্বাদ শেয়ার করে। এটি নিম্নলিখিত AWS re:Invent talk উপর ভিত্তি করে: ভ্রমণের পূর্বাভাস ডিনের বক্তব্যে... ২০০০ সালে প্রতিষ্ঠিত, ট্রিপডভাইজার ভ্রমণ ও অতিথিদের জন্য বিশ্বব্যাপী নেতৃস্থানীয় হয়ে উঠেছে, শত শত মিলিয়ন ভ্রমণকারীদের তাদের নিখুঁত ভ্রমণ পরিকল্পনা করতে সহায়তা করে। ট্রিপডভাইজারের আয় ১.৮ বিলিয়ন ডলারেরও বেশি এবং নাসদাক বিনিময়ে একটি জনপ্রিয় সংস্থা। যেকোনো দিনে, আমাদের সিস্টেম 25 থেকে 50 মিলিয়ন ব্যবহারকারীদের কাছ থেকে 2 বিলিয়নেরও বেশি অনুরোধগুলি পরিচালনা করে। ট্রিপ্যাডভাইজারে আপনার প্রতিটি ক্লিকটি বাস্তব সময়ে প্রক্রিয়াকরণ করা হয়। এর পেছনে, আমরা ব্যক্তিগত সুপারিশগুলি সরবরাহ করার জন্য মেশিন লার্নিং মডেলগুলি ব্যবহার করছি - যা আপনাকে সেই নিখুঁত যাত্রার কাছাকাছি রাখে। এই ব্যক্তিগতকরণ ইঞ্জিনের হৃদয়ে ScyllaDB AWS এ কাজ করে। . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds আমি ভ্রমণকারীদের তাদের নিখুঁত ভ্রমণ পরিকল্পনা করার জন্য প্রয়োজনীয় সবকিছু খুঁজে বের করতে সহায়তা করার জন্য ট্রিপডভাইজারের প্রতিটি ব্যবহারকারীর জন্য ব্যক্তিগত সুপারিশগুলি সরবরাহ করার জন্য ScyllaDB, AWS, এবং বাস্তব সময়ের মেশিন শিখার ক্ষমতাগুলি কীভাবে ব্যবহার করে তা ভাগাভাগি করবো। ব্যক্তিগত ট্রিপ পরিকল্পনা কল্পনা করুন যে আপনি একটি ভ্রমণ পরিকল্পনা করছেন. যখন আপনি ট্রিপডভাইজারের হোমপেজে পৌঁছান, তখন ট্রিপডভাইজার ইতিমধ্যে জানে যে আপনি একটি খাদ্যশিল্পী, একটি আবিষ্কারক, বা একটি সৈকত প্রেমিক - এবং আপনি স্পট-অন সুপারিশগুলি দেখছেন যা আপনার নিজের আগ্রহগুলির জন্য ব্যক্তিগত বলে মনে হয়। যখন আপনি ট্রাইপ্যাডভাইজারের চারপাশে ব্রাউজ করেন, তখন আমরা মেশিন লার্নিং মডেলগুলি ব্যবহার করে যা আপনার বর্তমান এবং পূর্ববর্তী ব্রাউজিং কার্যকলাপের উপর ভিত্তি করে পয়েন্ট গণনা করে যা আপনি দেখছেন তা ব্যক্তিগত করতে শুরু করি. আমরা এমন হোটেল এবং অভিজ্ঞতা সুপারিশ করি যা আমরা মনে করি যে আপনি আগ্রহী হবেন. আমরা আপনার ব্যক্তিগত পছন্দগুলির উপর ভিত্তি করে হোটেলগুলি সারি করি. আমরা আপনি যে হোটেলটি দেখছেন তার কাছাকাছি জনপ্রিয় আগ্রহী জায়গাগুলি সুপারিশ করি. এটি আপনার ব্যক্তিগত পছন্দ এবং পূর্ববর্তী ব্রাউজিং কার্যকলাপের উপর ভিত্তি করে সমন্বিত Tripadvisor এর মডেল সার্ভিং আর্কিটেকচার ট্রিপডভাইজার শত শত স্বাধীনভাবে স্কেলযোগ্য মাইক্রো সেবাগুলিতে কাজ করে Kubernetes on-prem এবং Amazon EKS. আমাদের ML মডেল সার্ভিং প্ল্যাটফর্মটি এই মাইক্রো সেবাগুলির একটি মাধ্যমে প্রদর্শিত হয়। এই গেটওয়ে পরিষেবাটি ক্লায়েন্ট সার্ভিস থেকে 100 টিরও বেশি ML মডেলগুলি বর্ণনা করে – যা আমাদের পরীক্ষার প্ল্যাটফর্ম ব্যবহার করে সেরা মডেলগুলি খুঁজে পেতে A/B পরীক্ষা চালানোর অনুমতি দেয়। ML মডেলগুলি প্রধানত আমাদের ডাটা বিজ্ঞানী এবং মেশিন লার্নিং ইঞ্জিনিয়াররা Kubeflow এ Jupyter নোটবুক ব্যবহার করে বিকাশ করে। Custom Feature দোকান বৈশিষ্ট্য স্টোর প্রধানত ব্যবহারকারীর বৈশিষ্ট্য এবং স্ট্যাটিক বৈশিষ্ট্যগুলি পরিষেবা করে। স্ট্যাটিক বৈশিষ্ট্যগুলি রেডিসে সংরক্ষিত হয় কারণ তারা খুবই প্রায়শই পরিবর্তন করে না। ব্যবহারকারীর বৈশিষ্ট্যগুলি ভিসিটর প্ল্যাটফর্ম নামে একটি প্ল্যাটফর্মের মাধ্যমে বাস্তব সময়ে প্রদান করা হয়. আমরা ScyllaDB এর বিরুদ্ধে ডাইনামিক CQL চাহিদাগুলি পরিচালনা করি, এবং . we do not need a caching layer because ScyllaDB is so fast আমাদের বৈশিষ্ট্য স্টোর প্রতি সেকেন্ডে সর্বোচ্চ 5 মিলিয়ন স্ট্যাটিক বৈশিষ্ট্য এবং প্রতি সেকেন্ডে অর্ধ মিলিয়ন ব্যবহারকারীর বৈশিষ্ট্য সরবরাহ করে। একটি ML ফিচার কি? বৈশিষ্ট্যগুলি ML মডেলগুলির ইনপুট পরিবর্তনগুলি যা একটি পূর্বাভাস তৈরি করতে ব্যবহৃত হয়. There are Static Features and User Features. স্ট্যাটিক বৈশিষ্ট্যগুলির কিছু উদাহরণ এমন পুরস্কারগুলি যা একটি রেস্টুরেন্ট জিতেছে বা একটি হোটেল দ্বারা প্রদত্ত সুবিধাগুলি (যেমন বিনামূল্যে ওয়াই-ফাই, পশু বন্ধুত্বপূর্ণ বা ফিটনেস সেন্টার)। ব্যবহারকারী বৈশিষ্ট্যগুলি বাস্তব সময়ে সংগৃহীত হয় যখন ব্যবহারকারীরা সাইটে ব্রাউজ করে. আমরা তাদের ScyllaDB এ সংরক্ষণ করি যাতে আমরা দ্রুত অনুরোধগুলি পেতে পারি. ব্যবহারকারী বৈশিষ্ট্যগুলির কিছু উদাহরণগুলি গত 30 মিনিটের মধ্যে দেখা হোটেল, গত 24 ঘন্টার মধ্যে দেখা রেস্তোরাঁ, বা গত 30 দিনের মধ্যে পাঠানো পর্যালোচনা। প্রযুক্তির ভিজিটর প্ল্যাটফর্ম ScyllaDB ভিজিটর প্ল্যাটফর্মের হৃদয়। আমরা আমাদের গ্রাহকদের জন্য প্ল্যাটফর্মটি প্রদর্শন করার জন্য জাভা ভিত্তিক Spring Boot মাইক্রো সেবাগুলি ব্যবহার করি। এটি AWS ECS Fargate এ চালু করা হয়। আমরা আমাদের দৈনন্দিন ডেটা রক্ষণাবেক্ষণ কাজের জন্য Kubernetes এ Apache Spark চালু করি, আমাদের অফলাইন থেকে অনলাইন কাজগুলি। তারপর আমরা আমাদের অফলাইন ডেটা স্টোরেজ থেকে ডেটা লোড করতে ScyllaDB এ ব্যবহার করি যাতে তারা লাইভ সাইটে উপলব্ধ হয়। ভিজিটর প্ল্যাটফর্ম ডেটা ফ্লো নিম্নলিখিত গ্রাফটি দেখায় যে ডেটা চারটি ধাপে আমাদের প্ল্যাটফর্মের মাধ্যমে প্রবাহিত হয়: উত্পাদন, ইনজেকশন, সংগঠন এবং সক্রিয় করুন। তথ্য আমাদের ওয়েবসাইট এবং আমাদের মোবাইল অ্যাপ্লিকেশন দ্বারা উত্পাদিত হয়. এই তথ্যের কিছুগুলি আমাদের ক্রস ডিভাইস ব্যবহারকারীর পরিচয় গ্রাফ, আচরণ ট্র্যাকিং ইভেন্ট (যেমন পৃষ্ঠা ভিউ এবং ক্লিকগুলি) এবং স্ট্রিমিং ইভেন্টগুলি যা Kinesis এর মাধ্যমে যায়। দর্শক প্ল্যাটফর্মের মাইক্রো সেবাগুলি এই ডেটা অন্তর্ভুক্ত এবং সংগঠিত করতে ব্যবহৃত হয়. ScyllaDB এর ডেটা দুইটি কী স্পেসে সংরক্ষিত হয়: ভিজিটর কোর কীবোর্ড, যা ভিজিটর পরিচয় গ্রাফ অন্তর্ভুক্ত ভিজিটর মেট্রিক কীবোর্ড, যেখানে তথ্য এবং মেট্রিকস রয়েছে (সাইটটি ব্রাউজ করার সময় লোকেরা যা করেছে) আমরা প্ল্যাটফর্মের ডেটা রক্ষা এবং পরিষ্কার করার জন্য প্রতিদিন ইটিএল প্রক্রিয়াগুলি ব্যবহার করি. আমরা আমাদের অফলাইন ডেটা স্টোরেজে ডেটা পণ্য উত্পাদন করি, প্রতিদিন স্ট্যাম্পিং করি - যেখানে তারা অন্যান্য ইন্টিগ্রেশন এবং অন্যান্য ডেটা পাইপলাইনগুলি তাদের প্রক্রিয়াকরণে ব্যবহার করার জন্য উপলব্ধ। এখানে সংখ্যা দ্বারা ভিজিটর প্ল্যাটফর্মের একটি নজর আছে: কেন দুটি ডাটাবেস? আমাদের অনলাইন ডাটাবেসটি বাস্তব সময়ে, লাইভ ওয়েবসাইট ট্র্যাফিকের উপর দৃষ্টি আকর্ষণ করে। ScyllaDB খুব কম দেরি এবং উচ্চ পারফরম্যান্স সরবরাহ করে এই ভূমিকা পূরণ করে। আমরা অনলাইন ডাটাবেসের ডেটা সীমাহীনভাবে বৃদ্ধি থেকে বিরত থাকার জন্য সংক্ষিপ্ত TTLs ব্যবহার করি, এবং আমাদের ডেটা রক্ষণাবেক্ষণ কাজগুলি নিশ্চিত করে যে আমরা শুধুমাত্র বাস্তব দর্শকদের জন্য ব্যবহারকারীর কার্যক্রম ডেটা সংরক্ষণ করি। আমাদের অফলাইন ডেটা স্টোরেজ রিপোর্টিংয়ের জন্য ব্যবহৃত ঐতিহাসিক ডেটা সংরক্ষণ করে, অন্যান্য ডেটা পণ্য তৈরি করে এবং আমাদের এমএল মডেলগুলি প্রশিক্ষণ করে। ভিজিটর প্ল্যাটফর্ম মাইক্রো সেবা আমরা ভিজিটর প্ল্যাটফর্মের জন্য 5 microservices ব্যবহার করি: Visitor Core কুকিজ এবং ডিভাইস আইডি উপর ভিত্তি করে ক্রস ডিভাইস ব্যবহারকারীর পরিচয় গ্রাফ পরিচালনা করে। ভিজিটর মিট্রিক আমাদের চাহিদা ইঞ্জিন, এবং এটি আমাদের নির্দিষ্ট ভিজিটরদের জন্য তথ্য এবং মিটার প্রদর্শন করার ক্ষমতা প্রদান করে. আমরা ভিজিটর চাহিদা ভাষা বা VQL নামে একটি ডোমেইন নির্দিষ্ট ভাষা ব্যবহার করি. এই উদাহরণ VQL আপনাকে গত তিন ঘণ্টার মধ্যে সর্বশেষ বাণিজ্য ক্লিক তথ্য দেখতে দেয়. Visitor Publisher এবং Visitor Saver লিখার পথটি পরিচালনা করে, প্ল্যাটফর্মটিতে ডেটা লিখে। ScyllaDB-এ ডেটা সংরক্ষণের পাশাপাশি, আমরা অফলাইন ডেটা স্টোরেজে ডেটা স্ট্রিম করি। Visitor Composite ব্যাটারি প্রক্রিয়াকরণ কাজে ডেটা প্রকাশ করার জন্য সহজ করে তোলে. এটি একটি একক API কলে ভিজিটর সঞ্চয়কারী এবং ভিজিটর কোর সনাক্ত করতে এবং তথ্য এবং মিটার প্রকাশ করতে ভিজিটর কোর অন্তর্ভুক্ত করে। মাইক্রো সার্ভিস ল্যাটেনশন এই গ্রাফটি দেখায় যে আমাদের মাইক্রো সেবা ল্যাটিনেশন কিভাবে সময়ের সাথে সাথে স্থিতিশীল থাকে। গড় দেরি মাত্র 2.5 মিলিসেকেন্ড, এবং আমাদের P999 মাত্র 12.5 মিলিসেকেন্ড. এটি চমৎকার কর্মক্ষমতা, বিশেষ করে যে আমরা প্রতিদিন 1 বিলিয়ন অনুরোধগুলি পরিচালনা করি। আমাদের মাইক্রো সার্ভিস ক্লায়েন্টদের কঠোর দেরি প্রয়োজনীয়তা রয়েছে. 95% কলগুলি 12 মিলিসেকেন্ড বা কম সময়ে সম্পন্ন করতে হবে. যদি তারা এটি অতিক্রম করে, তাহলে আমরা পেইজ করা হবে এবং দেরিগুলি কী প্রভাবিত করে তা খুঁজে বের করতে হবে। দীর্ঘমেয়াদি ল্যাটিন এখানে তিন দিনের মধ্যে ScyllaDB এর পারফরম্যান্সের একটি স্ন্যাপশট। শীর্ষে, ScyllaDB প্রতি সেকেন্ডে 340,000 অপারেশন পরিচালনা করছে (চিহ্নিত এবং পড়া এবং মুছে ফেলা সহ) এবং CPU শুধুমাত্র 21% এ ভাঁজ করছে। 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-3X বেশি পড়া আছে কেন ScyllaDB? আমাদের সমাধানটি প্রাথমিকভাবে Cassandra on-prem ব্যবহার করে নির্মিত হয়েছিল। কিন্তু মাত্রা বৃদ্ধির সাথে সাথে, অপারেটিং ব্যস্ততাও বৃদ্ধি পেয়েছে। এটি আমাদের জন্য ডিজিটাল অপারেশন সমর্থন প্রয়োজন ছিল যাতে আমরা ডাটাবেস আপগ্রেড, ব্যাকআপ ইত্যাদি পরিচালনা করতে পারি। এছাড়াও, আমাদের সমাধানটি কোর উপাদানগুলির জন্য খুব কম দেরি প্রয়োজন। আমাদের ব্যবহারকারীর পরিচয় ব্যবস্থাপনা সিস্টেমটি 30 মিলিসেকেন্ডের মধ্যে ব্যবহারকারীর সনাক্ত করতে হবে – এবং সেরা ব্যক্তিগতকরণের জন্য, আমরা আমাদের ইভেন্ট ট্র্যাকিং প্ল্যাটফর্মকে 40 মিলিসেকেন্ডের মধ্যে প্রতিক্রিয়া দিতে চাই। এটি গুরুত্বপূর্ণ যে আমাদের সমাধানটি পৃষ্ঠা আমরা ScyllaDB এর সাথে একটি কনসার্ট প্রমাণ চালিয়েছি এবং ক্যাসান্ডারের তুলনায় পাসপোর্ট অনেক ভাল ছিল এবং অপারেটিং বাধ্যবাধকতা এড়ানো হয়েছিল। আমরা একটি সম্পূর্ণরূপে পরিচালিত বিকল্প চেয়েছিলাম, তাই আমরা ক্যাসান্ডার থেকে ScyllaDB ক্লাউডে স্থানান্তরিত হয়েছিলাম, একটি ডাবল লেখার কৌশল অনুসরণ করে। যা আমাদের 40,000 অপারেশন বা অনুরোধ প্রতি সেকেন্ডে পরিচালনা করার সময় শূন্য অস্থিরতার সাথে স্থানান্তর করতে সক্ষম করে। এই চার্টটি দেখায় ScyllaDB এর BYOA বিতরণটি কেমন দেখায়। চার্টের কেন্দ্রে, আপনি একটি 6 নোড ScyllaDB ক্লাস্টার দেখতে পারেন যা EC2 এ পরিচালিত হয়। ScyllaDB মনিটর আমাদের Grafana ড্যাশবোর্ড এবং Prometheus মেট্রিক্স দেয়। ScyllaDB ম্যানেজার অবকাঠামো স্বয়ংক্রিয়করণ যেমন ব্যাকআপ এবং মেরামত চালানোর জন্য যত্ন নেয়। এই বিতরণের মাধ্যমে, ScyllaDB আমাদের মাইক্রো সার্ভিসের খুব কাছাকাছি অবস্থিত হতে পারে যা আমাদের আরও কম দেরি এবং অনেক বেশি পারফরম্যান্স এবং পারফরম্যান্স প্রদান করে। সংক্ষেপে, আমি আশা করি আপনি এখন আমাদের আর্কিটেকচার, প্ল্যাটফর্মটি চালানোর প্রযুক্তিগুলি এবং ScyllaDB কিভাবে আমাদের ট্রিপডভাইজারের অত্যন্ত উচ্চ মাত্রা মোকাবেলা করতে সক্ষম করার জন্য একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। সিনথিয়া ডানলপ Cynthia ScyllaDB এর সামগ্রী কৌশল সিনিয়র ডিরেক্টর এবং 20+ বছর ধরে সফটওয়্যার ডেভেলপমেন্ট এবং গুণমান প্রকৌশল সম্পর্কে লিখেছেন।