הפעלת כל פלטפורמה מבוזרת ניתנת להרחבה דורשת מחויבות לאמינות, כדי להבטיח שללקוחות יש את מה שהם צריכים כשהם צריכים את זה. התלות עשויה להיות די מורכבת, במיוחד עם פלטפורמה גדולה כמו רובלוקס. בניית שירותים אמינים פירושה שללא קשר למורכבות ולמצב התלות, כל שירות נתון לא יופרע (כלומר מאוד זמין), יפעל ללא באגים (כלומר גבוה איכות) וללא שגיאות (כלומר סובלנות לתקלות).
למה חשובה אמינות
צוות Account Identity שלנו מחויב להגיע לאמינות גבוהה יותר, מכיוון ששירותי התאימות שבנינו הם מרכיבי ליבה של הפלטפורמה. ציות שבורה עלולות לגרום לתוצאות קשות. עלות חסימת הפעולה הטבעית של רובלוקס היא גבוהה מאוד, עם משאבים נוספים הדרושים להתאוששות לאחר תקלה וחווית משתמש מוחלשת.
הגישה האופיינית לאמינות מתמקדת בעיקר בזמינות, אך במקרים מסוימים מונחים מעורבים ומשתמשים בהם לרעה. רוב המדידות לזמינות רק מעריכות אם השירותים פועלים, בעוד שהיבטים כמו סובלנות מחיצות ועקביות נשכחים לפעמים או לא מובנים.
בהתאם למשפט CAP, כל מערכת מבוזרת יכולה להבטיח רק שניים מתוך שלושת ההיבטים הללו, כך ששירותי התאימות שלנו מקריבים קצת עקביות על מנת להיות זמינות מאוד וסובלנות למחיצות. עם זאת, השירותים שלנו הקריבו מעט ומצאו מנגנונים להשגת עקביות טובה עם שינויים אדריכליים סבירים שיוסברו להלן.
התהליך להגיע לאמינות גבוהה יותר הוא איטרטיבי, עם מדידה הדוקה התאמת עבודה מתמשכת על מנת למנוע, למצוא, לזהות ולתקן ליקויים לפני שמתרחשים תקריות. הצוות שלנו זיהה ערך רב בפרקטיקות הבאות:
- מדידה נכונה - בניית צפייה מלאה סביב האופן שבו איכות מועברת ללקוחות וכיצד התלות מספקת לנו איכות.
- ציפייה יזומה - לבצע פעילויות כגון סקירות אדריכליות והערכות סיכוני תלות.
- תעדוף את התיקון – הביאו תשומת לב גבוהה יותר לפתרון דוחות תקריות עבור השירות והתלות המקושרים לשירות שלנו.
בניית אמינות גבוהה יותר דורשת תרבות של איכות. הצוות שלנו כבר השקיע בפיתוח מונחה ביצועים ויודע שהצלחת תהליך תלויה באימוצו. הצוות אימץ תהליך זה במלואו ויישם את הפרקטיקות כסטנדרט. התרשים הבא מדגיש את מרכיבי התהליך:
כוחה של מדידה נכונה
לפני שצולל עמוק יותר לתוך המדדים, יש הבהרה מהירה לעשות לגבי מדידות רמת השירות.
- SLO (Service Level Objective) הוא יעד האמינות שאליה שואף הצוות שלנו (כלומר 99.999%).
- SLI (שירות רמת אינדיקטור) הוא המהימנות שהושגה בהינתן מסגרת זמן (כלומר 99.975% בפברואר האחרון).
- SLA (הסכם רמת שירות) הוא האמינות המוסכמת לספק ולצפות על ידי הצרכנים שלנו במסגרת זמן נתונה (כלומר 99.99% בשבוע).
ה-SLI צריך לשקף את הזמינות (ללא תגובות לא מטופלות או חסרות), את סובלנות הכשל (ללא שגיאות שירות) והאיכות שהושגה (ללא שגיאות בלתי צפויות). לכן, הגדרנו את ה-SLI שלנו כ"יחס ההצלחה" של תגובות מוצלחות בהשוואה לסך כל הבקשות שנשלחו לשירות. תשובות מוצלחות הן אותן בקשות שנשלחו בזמן ובצורה, כלומר לא קישוריות, שירות או שגיאות בלתי צפויות קרו.
SLI או יחס הצלחה זה נאסף מנקודת מבטם של הצרכנים (כלומר, לקוחות). הכוונה היא למדוד את החוויה הממשית מקצה לקצה המועברת לצרכנים שלנו, כך שנרגיש בטוחים בעמידה ב-SLAs. לא לעשות זאת תיצור תחושת אמינות מזויפת שמתעלמת מכל דאגות התשתית כדי ליצור קשר עם הלקוחות שלנו. בדומה ל-SLI לצרכן, אנו אוספים את ה-SLI התלות כדי לעקוב אחר כל סיכון פוטנציאלי. בפועל, כל SLAs התלות צריכים להתיישר עם שירות SLA ויש תלות ישירה איתם. כישלון של אחד מרמז על כישלון של כולם. אנחנו גם עוקבים ומדווחים על מדדים מהשירות עצמו (כלומר, השרת) אבל זה לא המקור המעשי לאמינות גבוהה.
בנוסף ל-SLIs, כל בנייה אוספת מדדי איכות המדווחים על ידי זרימת העבודה של ה-CI שלנו. תרגול זה עוזר לאכוף היטב שערים איכותיים (כלומר, כיסוי קוד) ולדווח על מדדים משמעותיים אחרים, כגון תאימות לתקן קידוד וניתוח קוד סטטי. נושא זה כוסה בעבר במאמר אחר, בניית שירותי מיקרו המונעים על ידי ביצועים. שמירה קפדנית על איכות מסתכמת כשמדברים על אמינות, כי ככל שאנו משקיעים יותר בהגעה לציונים מצוינים, כך אנו בטוחים יותר שהמערכת לא תיכשל בתנאים קשים.
לצוות שלנו יש שני לוחות מחוונים. אחת מספקת את כל הנראות הן ל-Consumers SLI והן ל-Dependencies SLI. השני מציג את כל מדדי האיכות. אנו עובדים על מיזוג הכל ללוח מחוונים אחד, כך שכל ההיבטים שאכפת לנו מהם מאוחדים ומוכנים לדיווח בכל מסגרת זמן נתונה.
צפו לכישלון
מַעֲשֶׂה ביקורות אדריכליות הוא חלק מהותי בלהיות אמין. ראשית, אנו קובעים אם קיימת יתירות ואם לשירות יש את האמצעים לשרוד כאשר התלות יורדת. מעבר לרעיונות השכפול האופייניים, רוב השירותים שלנו יישמו טכניקות הידרציה כפולות של מטמון משופרות, אסטרטגיות שחזור כפולות (כגון תורים מקומיים לכשל בכשל), או אסטרטגיות אובדן נתונים (כגון תמיכה בעסקאות). הנושאים הללו נרחבים מספיק כדי להצדיק כניסה נוספת לבלוג, אך בסופו של דבר ההמלצה הטובה ביותר היא ליישם רעיונות השוקלים תרחישי אסון ולמזער כל עונש ביצוע.
היבט נוסף שחשוב לצפות מראש הוא כל דבר שיכול לשפר את הקישוריות. זה אומר להיות אגרסיבי לגבי זמן השהייה נמוך עבור לקוחות ולהכין אותם לתעבורה גבוהה מאוד באמצעות טכניקות בקרת מטמון, צדדיות ומדיניות ביצועים עבור פסקי זמן, מפסקים וניסיונות חוזרים. שיטות עבודה אלו חלות על כל לקוח כולל מטמונים, חנויות, תורים ולקוחות תלויים הדדיים ב-HTTP ו-gRPC. המשמעות היא גם שיפור האותות הבריאים מהשירותים והבנה שבדיקות תקינות ממלאות תפקיד חשוב בכל תזמור מכולות. רוב השירותים שלנו מספקים איתותים טובים יותר לפגיעה כחלק מהמשוב על בדיקת תקינות ומאמתים שכל הרכיבים הקריטיים תקינים לפני שליחת אותות בריאים.
פירוק השירותים לחלקים קריטיים ולא קריטיים הוכח כיעיל להתמקדות בפונקציונליות החשובה ביותר. פעם היו לנו באותו שירות נקודות קצה לניהול בלבד, ולמרות שלא נעשה בהן שימוש לעתים קרובות, הן השפיעו על מדדי ההשהיה הכוללים. העברתם לשירות משלהם השפיעה על כל מדד בכיוון חיובי.
הערכת סיכוני תלות הוא כלי חשוב לזיהוי בעיות פוטנציאליות עם תלות. משמעות הדבר היא שאנו מזהים תלות עם SLI נמוך ומבקשים יישור SLA. תלות אלה זקוקות לתשומת לב מיוחדת במהלך שלבי האינטגרציה, ולכן אנו מתחייבים לזמן נוסף כדי לבדוק אם התלות החדשה בשלה מספיק עבור התוכניות שלנו. דוגמה טובה אחת היא האימוץ המוקדם שהיה לנו עבור Roblox Storage-as-a-Service. השילוב עם שירות זה הצריך הגשת כרטיסי באגים ופגישות סינכרון תקופתיות כדי להעביר ממצאים ומשוב. כל העבודה הזו משתמשת בתג "אמינות" כדי שנוכל לזהות במהירות את המקור שלה ואת סדרי העדיפויות שלה. אפיון התרחש לעתים קרובות עד שהיה לנו הביטחון שהתלות החדשה מוכנה עבורנו. עבודה נוספת זו עזרה למשוך את התלות לרמת האמינות הנדרשת שאנו מצפים לספק לפעול יחד למען מטרה משותפת.
להביא מבנה לכאוס
אף פעם לא רצוי שיהיו אירועים. אבל כשהם קורים, יש מידע משמעותי שאפשר לאסוף וללמוד ממנו כדי להיות אמין יותר. לצוות שלנו יש דוח תקריות צוות שנוצר מעל ומעבר לדוח הרגיל של החברה, כך שאנו מתמקדים בכל האירועים ללא קשר להיקף ההשפעה שלהם. אנו מציינים את הסיבה השורשית ומתעדפים את כל העבודה כדי למתן אותה בעתיד. כחלק מדוח זה, אנו קוראים לצוותים אחרים לתקן אירועי תלות בעדיפות גבוהה, לעקוב אחר פתרון מתאים, בדיעבד ולחפש דפוסים שעשויים לחול עלינו.
הצוות מייצר א דוח אמינות חודשי לכל שירות זה כולל את כל ה-SLIs שהוסבר כאן, כל כרטיסים שפתחנו בגלל אמינות וכל תקרית אפשרית הקשורה לשירות. אנחנו כל כך רגילים להפיק את הדוחות האלה שהשלב הטבעי הבא הוא להפוך את החילוץ שלהם לאוטומטי. ביצוע פעילות תקופתית זו היא חשובה, והיא תזכורת לכך שהאמינות נמצאת כל הזמן במעקב ובחינה בפיתוח שלנו.
המכשור שלנו כולל מדדים מותאמים אישית והתראות משופרות, כך שנדפד בהקדם האפשרי כאשר מתרחשות בעיות ידועות וצפויות. כל ההתראות, כולל חיוביות כוזבות, נבדקות מדי שבוע. בשלב זה, ליטוש כל התיעוד חשוב כדי שהצרכנים שלנו ידעו למה לצפות כאשר מופעלות התראות ומתי מתרחשות שגיאות, ואז כולם יודעים מה לעשות (למשל, ספרי משחק והנחיות אינטגרציה מיושרים ומתעדכנים לעתים קרובות).
בסופו של דבר, אימוץ האיכות בתרבות שלנו הוא הגורם הקריטי והמכריע ביותר להגיע לאמינות גבוהה יותר. אנו יכולים לראות כיצד שיטות עבודה אלו המיושמות בעבודה היומיומית שלנו כבר משתלמות. הצוות שלנו אובססיבי לגבי אמינות וזה ההישג החשוב ביותר שלנו. הגברנו את המודעות שלנו להשפעה שיכולה להיות לפגמים פוטנציאליים ומתי הם עלולים להופיע. שירותים שהטמיעו שיטות עבודה אלו הגיעו בעקביות ל-SLOs ו-SLAs שלהם. דוחות המהימנות שעוזרים לנו לעקוב אחר כל העבודה שעשינו הם עדות לעבודה שהצוות שלנו עשה, ומהווים שיעורים חשובים ליידע ולהשפיע על צוותים אחרים. כך נוגעת תרבות האמינות בכל מרכיבי הפלטפורמה שלנו.
הדרך לאמינות גבוהה יותר היא לא קלה, אבל היא הכרחית אם אתה רוצה לבנות פלטפורמה מהימנה שמדמיינת מחדש איך אנשים מתאחדים.
אלברטו הוא מהנדס תוכנה ראשי בצוות חשבון זהות ב-Roblox. הוא היה בתעשיית המשחקים הרבה זמן, עם קרדיטים על כותרות משחק AAA רבות ופלטפורמות מדיה חברתית עם התמקדות חזקה בארכיטקטורות ניתנות להרחבה. כעת הוא עוזר לרובלוקס להגיע לצמיחה ולבגרות על ידי יישום שיטות הפיתוח הטובות ביותר.
ההודעה מתן אמינות פלטפורמה בקנה מידה גדול הופיע לראשונה ב בלוג רובלוקס.
- "
- a
- אודות
- חֶשְׁבּוֹן
- להשיג
- הושג
- פעילויות
- פעילות
- תוספת
- נוסף
- אימוץ
- שְׁלִילִי
- הסכם
- תעשיות
- כְּבָר
- אנליזה
- אחר
- לצפות
- יישומית
- החל
- מריחה
- גישה
- אדריכלי
- סביב
- מאמר
- המשויך
- תשומת לב
- אוטומטי
- זמינות
- זמין
- מודעות
- כי
- לפני
- להיות
- להלן
- בנצ 'מרק
- הטוב ביותר
- מעבר
- בלוג
- להביא
- חרק
- לִבנוֹת
- שיחה
- אשר
- מקרים
- לגרום
- בדיקות
- לקוחות
- קוד
- סִמוּל
- לגבות
- איך
- לבצע
- מחויבות
- מְחוּיָב
- Common
- להעביר
- לעומת
- הענות
- רכיבים
- תנאים
- אמון
- בטוח
- לְחַבֵּר
- קישוריות
- לשקול
- תמיד
- צרכן
- צרכנים
- מכולה
- ליבה
- יכול
- לִיצוֹר
- נוצר
- קרדיטים
- קריטי
- תַרְבּוּת
- מנהג
- לקוחות
- לוח מחוונים
- נתונים
- עמוק יותר
- נתן
- אספקה
- מספק
- דרישות
- תלוי
- לקבוע
- צעצועי התפתחות
- ישיר
- אסון
- מופץ
- מטה
- מונע
- בְּמַהֲלָך
- מוקדם
- מקצה לקצה
- מהנדס
- במיוחד
- כולם
- הכל
- דוגמה
- מצוין
- לצפות
- צפוי
- ניסיון
- נרחב
- כשלון
- מָשׁוֹב
- ראשון
- לסדר
- להתמקד
- מתמקד
- התמקדות
- לעקוב
- הבא
- טופס
- מצא
- החל מ-
- מלא
- פונקציונלי
- פונקציונלי
- יסודי
- עתיד
- מִשְׂחָק
- גייטס
- יצירת
- מטרה
- טוב
- צמיחה
- אַחֲרָיוּת
- הנחיות
- לקרות
- קרה
- בְּרִיאוּת
- לעזור
- עזרה
- עוזר
- כאן
- גָבוֹהַ
- גבוה יותר
- פסים
- מאוד
- איך
- HTTPS
- רעיונות
- לזהות
- זהות
- פְּגִיעָה
- ליישם
- יושם
- חשוב
- לשפר
- משופר
- שיפור
- באחר
- כולל
- כולל
- גדל
- תעשייה
- להשפיע
- מידע
- תשתית
- השתלבות
- מטרה
- השקעה
- IT
- עצמו
- לדעת
- ידוע
- לִלמוֹד
- רמה
- קְצָת
- מקומי
- ארוך
- נראה
- לעשות
- תואם
- עניינים
- בוגר
- בגרות
- משמעות
- משמעותי
- אומר
- למדוד
- מדיה
- פגישות
- מדדים
- מעורב
- יותר
- רוב
- נע
- טבעי
- הכרחי
- אף על פי כן
- להפעיל
- מבצע
- תזמור
- להזמין
- אחר
- מקיף
- שֶׁלוֹ
- חלק
- אֲנָשִׁים
- ביצועים
- חתיכות
- תוכניות
- פלטפורמה
- פלטפורמות
- לְשַׂחֵק
- נקודה
- נקודת מבט
- מדיניות
- חיובי
- אפשרי
- פוטנציאל
- כּוֹחַ
- תרגול
- להציג
- מנהל
- עדיפות
- בעיות
- תהליך
- איכות
- מָהִיר
- מהירות
- לְהַגִיעַ
- סביר
- להחלים
- התאוששות
- לשקף
- בדבר
- אָמִין
- לדווח
- דוחות לדוגמא
- בקשות
- נדרש
- משאבים
- חוות דעת של לקוחותינו
- הסיכון
- כביש
- רובלוקס
- תפקיד
- שורש
- ריצה
- אותו
- להרחבה
- סולם
- תחושה
- שרות
- שירותים
- דומה
- since
- יחיד
- So
- חֶברָתִי
- מדיה חברתית
- פלטפורמות מדיה חברתיות
- תוכנה
- מהנדס תוכנה
- כמה
- מיוחד
- לעמוד
- תֶקֶן
- מצב
- חנויות
- אסטרטגיות
- חזק
- הצלחה
- מוצלח
- תמיכה
- מערכת
- מדבר
- נבחרת
- טכניקות
- מונחים
- מבחן
- השמיים
- לכן
- שְׁלוֹשָׁה
- כרטיסים
- זמן
- מסגרת זמן
- יַחַד
- סובלנות
- כלי
- נושא
- נושאים
- לעקוב
- תְנוּעָה
- הבנה
- us
- ערך
- לאמת
- לצפיה
- ראות
- שבוע
- מה
- אם
- בזמן
- לְלֹא
- תיק עבודות
- עובד
- היה