See the engineering behind real-time personalization at Tripadvisor’s massive (and rapidly growing) scale Tripadvisor מנסה להעריך זאת ברגע שאתה משתף פעולה עם האתר, ולאחר מכן מציעה לך מידע רלוונטי יותר ויותר בכל לחיצה – בתוך מילישניות. במאמר זה, דיין פולן (Tripadvisor Data Engineering Lead של צוות שירותים ומוצרים AI) מציע מבט על האופן שבו הם מייצרים אישיתזון זה. זה מבוסס על הדיון הבא AWS re:Invent: טיול מראש - Orientation במילים של דני... הוקמה בשנת 2000, TripAdvisor הפכה למובילה עולמית בתחום הנסיעות והאירוח, ועוזרת למאות מיליוני נוסעים לתכנן את הטיולים המושלמים שלהם. TripAdvisor מייצרת יותר מ-1.8 מיליארד דולר בהכנסות והיא חברה שנערכה בבורסה NASDAQ. בכל יום נתון, המערכת שלנו מתייחסת ליותר מ-2 מיליארד בקשות מ-25 עד 50 מיליון משתמשים. כל לחיצה שאתה עושה על Tripadvisor מתבצעת בזמן אמת. מאחורי זה, אנו מנצלים מודלים של למידה מכונה כדי לספק המלצות מותאמות אישית – מה שהופך אותך קרוב יותר למסע המושלם הזה. בלב מנוע האישיות הזה הוא ScyllaDB פועל על AWS. זה מאפשר לנו לספק עיכוב מילישניות בקנה מידה שרק ארגונים מעטים יכולים להגיע אליו. . 425K operations per second on ScyllaDB with P99 latencies for reads and writes around 1-3 milliseconds אני אשתף כיצד Tripadvisor מנצל את הכוח של ScyllaDB, AWS ו- Machine Learning בזמן אמת כדי לספק המלצות מותאמות אישית לכל משתמש.אנו נחקור כיצד אנו עוזרים למטיילים לגלות כל מה שהם צריכים כדי לתכנן את הנסיעה המושלמת שלהם: בין אם זה גילוי תכשיטים מוסתרים, אטרקציות שחייבים לראות, חוויות בלתי נשכחות, או המקומות הטובים ביותר להישאר ולאכול. תכנון טיולים אישי ברגע שאתם נכנסים לדף הבית של Tripadvisor, Tripadvisor כבר יודע אם אתם חובבי אוכל, הרפתקנים או חובבי חוף – ואתם רואים המלצות מקוונות שנראות מותאמות אישית לאינטרסים שלכם. כשאתה גולש ב-TripAdvisor, אנו מתחילים להתאים אישית את מה שאתה רואה באמצעות מודלים של Machine Learning שמחשבים ציונים בהתבסס על פעילות הגלישה הנוכחית והקודמת שלך.אנו ממליצים על מלונות וחוויות שאנו חושבים שתעניין אותך.אנו מגדירים מלונות בהתבסס על ההעדפות האישיות שלך.אנו ממליצים על נקודות עניין פופולריות ליד המלון שאתה צופה בו.כל אלה מותאמים על פי העדפות האישיות שלך ופעילות הגלישה הקודמת שלך. המודל של TripAdvisor שמשרת את האדריכלות Tripadvisor פועל על מאות מיקרו-שירותים המוגדלים באופן עצמאי ב-Kubernetes on-prem וב-Amazon EKS. שירות שער זה מוציא מעל 100 מודלים של ML מהשירותים ללקוחות – מה שמאפשר לנו להפעיל בדיקות A/B כדי למצוא את המודלים הטובים ביותר באמצעות פלטפורמת הניסוי שלנו. מודלים ML מפותחים בעיקר על ידי מדענים הנתונים שלנו והנדסי למידה מכונה באמצעות המחברות של Jupyter ב- Kubeflow. חנות Custom Feature חנות התכונות משרתת בעיקר תכונות משתמשים ותכונות סטטיות. תכונות סטטיות מאוחסנות ב- Redis מכיוון שהם לא משתנים לעתים קרובות מאוד. תכונות המשתמש מסופקות בזמן אמת באמצעות פלטפורמה בשם Visitor Platform.We execute dynamic CQL queries against ScyllaDB, and . we do not need a caching layer because ScyllaDB is so fast חנות התכונות שלנו מספקת עד 5 מיליון תכונות סטטיות לשנייה וחצי מיליון תכונות משתמשים לשנייה. מה זה ML Feature? תכונות הן משתנים כניסה למודלים ML המשמשים להכנת תחזית.יש תכונות סטטיות ותכונות משתמש. כמה דוגמאות של תכונות סטטיות הן פרסים שסעדה זכתה או מתקנים המוצעים על ידי מלון (כגון Wi-Fi חינם, חיות מחמד ידידותיות או מרכז כושר). תכונות המשתמש נאספות בזמן אמת כאשר משתמשים גולשים באתר.אנו מאחסנים אותן ב-ScyllaDB כדי שנוכל לקבל שאילתות מהירות.כמה דוגמאות לתכונות המשתמש הן המלונות שנצפו ב-30 הדקות האחרונות, המסעדות שנצפו ב-24 השעות האחרונות או ביקורות שנשלחו ב-30 הימים האחרונים. פלטפורמת הטכנולוגיה המאפשרת מבקרים ScyllaDB היא הליבה של פלטפורמת המבקרים. אנו משתמשים במיקרו-שירותי Spring Boot המבוססים על Java כדי לחשוף את הפלטפורמה ללקוחותינו. זה מתבצע ב- AWS ECS Fargate. אנו מפעילים את Apache Spark ב- Kubernetes עבור עבודות אחסון הנתונים היומיות שלנו, את עבודות החיצוניות שלנו לעבודה מקוונת. לאחר מכן אנו משתמשים בעבודות אלה כדי להוריד נתונים מחנות הנתונים החיצוניים שלנו ל- ScyllaDB כך שהם זמינים באתר חי. זרימת הנתונים של פלטפורמת המבקרים הגרף הבא מראה כיצד נתונים זורמים דרך הפלטפורמה שלנו בארבעה שלבים: לייצר, לצרוך, לארגן ולהפעיל. נתונים נוצרים על ידי אתר האינטרנט שלנו והאפליקציות הניידות שלנו. חלק מהנתונים האלה כוללים את גרף זהות המשתמשים בין המכשירים שלנו, אירועי מעקב התנהגותי (כגון צפיות בדף וקליקים) ואירועי סטרימינג המתרחשים דרך Kinesis. מיקרו-שירותים של פלטפורמת המבקרים משמשים לאסוף ולארגן נתונים אלה.הנתונים ב-ScyllaDB מאוחסנים בשני מרחבי מפתח: מרחב המפתח Visitor Core, המכיל את גרף הזהות של המבקר מרחב המפתחות למדידת המבקרים, המכיל עובדות ומדידות (הדברים שאנשים עשו בעת הגלישה באתר) אנו משתמשים בתהליכים ETL יומיים כדי לשמור ולנקות את הנתונים בפלטפורמה.אנו מייצרים מוצרי נתונים, מאובטחים מדי יום, במחסן הנתונים החיצוני שלנו – שם הם זמינים לאינטגרציות אחרות ונושאי נתונים אחרים לשימוש בעיבודם. הנה מבט על פלטפורמת המבקרים לפי המספרים: למה שני מסדי נתונים? מסד הנתונים המקוונים שלנו מתמקד בתנועה באתר באינטרנט בזמן אמת. ScyllaDB ממלא את התפקיד הזה על ידי מתן עיכובים נמוכים מאוד ותעבורות גבוהות.אנחנו משתמשים ב- TTLs לטווח קצר כדי למנוע את הנתונים במסד הנתונים המקוונים לגדול לתקופה אינסופית, ועבודות אחסון הנתונים שלנו מבטיחות שאנחנו שומרים רק נתוני פעילות המשתמשים עבור מבקרים אמיתיים. מחסן הנתונים החיצוני שלנו שומר על נתונים היסטוריים המשמשים לדווח, ליצור מוצרים נתונים אחרים ולימוד מודלים ML שלנו.אנחנו לא רוצים תהליכים נתונים חיצוניים בקנה מידה גדול להשפיע על הביצועים של האתר החיובי שלנו, ולכן יש לנו שתי מסדי נתונים נפרדים המשמשים לשני מטרות שונות. פלטפורמת מבקרים Microservices אנו משתמשים 5 microservices עבור פלטפורמת המבקרים: Visitor Core מנהל את גרף הזהות של המשתמש בין המכשירים בהתבסס על קובצי Cookie ו- Device IDs. Visitor Metric הוא מנוע השאילתות שלנו, והוא מספק לנו את היכולת לחשוף עובדות ומדידות עבור מבקרים ספציפיים.אנחנו משתמשים בשפה ספציפית לתחום הנקראת שפת השאילתה של המבקרים, או VQL. Visitor Publisher ו- Visitor Saver מטפלים במסלול הכתיבה, כותבים נתונים לפלטפורמה.בנוסף לאחסון נתונים ב- ScyllaDB, אנו מעבירים גם נתונים לאחסון נתונים לא מקוון. Visitor Composite מרחיב את פרסום הנתונים בעבודות עיבוד מנות.הוא מבטא את Visitor Saver ו- Visitor Core כדי לזהות מבקרים ולפרסם עובדות ומדידות בשיחה אחת ל-API. תגיותMicroservice Latency תרשים זה מצביע על האופן שבו עיכובים המיקרו-שירות שלנו נשארים יציבים לאורך זמן. הזמן הממוצע הוא רק 2.5 מילישניות, ו- P999 שלנו הוא פחות מ- 12.5 מילישניות. ללקוחות המיקרו-שירות שלנו יש דרישות אינטנסיביות קפדניות. 95% מהשיחות חייבות להסתיים בתוך 12 מילישניות או פחות. ScyllaDB אינטנסיביות הנה תמונה מהירה של הביצועים של ScyllaDB במשך שלושה ימים. בשיא, ScyllaDB מתמודדת עם 340,000 פעולות לשנייה (כולל כותבים וקוראים ומסירים) והCPU שוכב רק 21%. ScyllaDB מספק עבורנו כתיבה במיקרו-שנייה וקריאה במיקרו-שנייה. חלוקת נתונים ל- ScyllaDB תמונה זו מראה כיצד אנו מחלקים נתונים ל- ScyllaDB. ל- Visitor Metric Keyspace יש שתי טבלאות: Fact ו- Raw Metrics. המפתח העיקרי בטבלה Fact הוא Visitor GUID, Fact Type, and Created At Date. המפתח המשותף למקטע הוא Visitor GUID ו- Fact Type. המפתח לקבוצת הוא Created At Date, המאפשר לנו לסווג נתונים במקטעים לפי תאריך. עמודה המאפיינים מכילה אובייקט JSON המייצג את האירוע שהתרחש שם. אנו משתמשים באסטרטגיה של ScyllaDB כי: אופטימיזציה לשאלות טווח הוא מתמודד עם קרדינליות גבוהה מאוד זה טוב יותר עבור עומסי עבודה כבדים קריאה, ויש לנו על 2-3 פעמים יותר קריאה מאשר כתיבה למה ScyllaDB? הפתרון שלנו נבנה במקור באמצעות Cassandra on-prem. אבל ככל שהמגמה גדלה, כך גם עומס ההפעלה. זה נדרש תמיכה בפעילויות מוקדמות כדי שנוכל לנהל את העדכונים של מסד הנתונים, גיבוי וכו 'גם, הפתרון שלנו דורש עיכובים נמוכים מאוד עבור רכיבי הליבה. מערכת ניהול זהות המשתמש שלנו חייבת לזהות את המשתמש בתוך 30 מילישניות - ולצורך האישיות הטובה ביותר, אנו דורשים את פלטפורמת מעקב האירועים שלנו להגיב בתוך 40 מילישניות. פעלנו ב-Proof of Concept עם ScyllaDB והמצאנו כי התרומה טובה בהרבה יותר מ-Cassandra והעלויות הפעלה נמחקו. רצינו אפשרות מנוהלת לחלוטין, ולכן עברנו מ-Cassandra ל-ScyllaDB Cloud, בעקבות אסטרטגיית כתיבה כפולה.זה מאפשר לנו לעבור עם אפס זמן הפסקה תוך טיפול ב- 40,000 פעולות או בקשות לשנייה.אחר כך עברנו מ-ScyllaDB Cloud למודל של ScyllaDB, שבו אתה יכול לקבל את צוות ScyllaDB ליישם את מסד הנתונים של ScyllaDB לחשבון AWS שלך. תרשים זה מראה כיצד ייצוג BYOA של ScyllaDB נראה. במרכז הדיאגרמה, ניתן לראות קבוצת ScyllaDB בעלת 6 כוכבים המופעלת על EC2. ScyllaDB Monitor נותן לנו לוח טכנולוגיית Grafana, כמו גם מדדי Prometheus. ScyllaDB Manager דואג לאוטומציה של תשתיות כגון הפעלת גיבוי ותיקים. עם הפצה זו, ScyllaDB יכול להיות ממוקם קרוב מאוד למיקרו-שירותים שלנו כדי לתת לנו עיכובים נמוכים יותר, כמו גם ביצועים גבוהים בהרבה. לסיכום, אני מקווה שיש לך עכשיו הבנה טובה יותר של האדריכלות שלנו, הטכנולוגיות המניעות את הפלטפורמה, וכיצד ScyllaDB משחק תפקיד קריטי המאפשר לנו לטפל בגודל הגבוה ביותר של Tripadvisor. אודות Cynthia Dunlop סינתה היא מנהל בכיר של אסטרטגיה תוכן ב ScyllaDB. היא כותבת על פיתוח תוכנה והנדסת איכות במשך 20+ שנים.