מהו ניסוי Finch ב-Chrome?

תאריך פרסום: 3 באפריל 2025

כשמגיע הזמן להשיק תכונה חדשה ב-Chrome, מתבצעות הרבה בדיקות כדי לוודא שהתכונה פועלת, תואמת ואמינה. אחד מהיתרות האלה הוא ניסויי Finch. השם 'ניסוי' לא צריך להטעות אתכם ולגרום לכם לחשוב שהתכונה לא בטוחה, כי המצב הוא בדיוק הפוך. השקות של Finch עוזרות לנו להוסיף תכונות שיכולות לגרום לבעיות תאימות בצורה בטוחה, כי הן מאפשרות לנו להשבית במהירות תכונה אם נתקלים בבעיות בלתי צפויות. במאמר הזה מוסבר איך ומדוע אנחנו משתמשים ב-Finch כדי להשיק חלק מהתכונות ב-Chrome.

בדרך כלל, כדי להפעיל תכונה ב-Chrome, פשוט מעבירים את הערך הבוליאני ממצב מושבת למצב מופעל בתוך Chrome. כשמשיקים תכונה חדשה, זה פשוט אומר שהמצב של הערך הבוליאני הזה משתנה ל'מופעל' אצל כל המשתמשים. יש כמה דרכים לעשות את זה:

  • התכונה מופעלת 'בקוד': כלומר, לקובץ ההפעלה של Chrome יש הגדרה שמופעלת כברירת מחדל.
  • הפעלת התכונה 'לפי גרסת מקור לניסיון': מערכת גרסת המקור לניסיון היא דרך שבה אתר מסוים יכול להצטרף לניסוי עבור כל משתמשי Chrome, וכך להפעיל תכונה מסוימת באתר הזה בלבד.
  • הפעלת התכונה 'באמצעות Finch': Chrome מאחזר קובץ הגדרה משרת באופן תקופתי, והקובץ הזה יכול להכיל הוראות להפעלה או להשבתה של תכונה.
  • השבתה של Finch: היא ההפך מהפעלה של Finch. במקרה כזה, התכונה מופעלת 'בקוד' אבל מושבתת באמצעות מערכת Finch, בדרך כלל בגלל בעיות שזוהו אחרי ההשקה.

תרחישי שימוש ב-Finch

הנושא של הפוסט הזה בבלוג הוא Finch, ולכן לא נרחיב על הפעלת התכונה 'בקוד' או 'בגרסת מקור לניסיון'. אבל יש ל-Finch הרבה תרחישי שימוש מעניינים.

בדיקה בקבוצה קטנה של משתמשים (A/B Testing)

לרוב, משתמשים ב-Finch כדי לבצע בדיקות A/B של תכונה או אופטימיזציה. במקרה כזה, תכונה מופעלת עבור אחוז קטן של משתמשים, כדי שאפשר יהיה לאסוף נתונים על ההבדל בביצועים, בהתנהגות או בשימוש כשהתכונה מופעלת לעומת כשהיא מושבתת.

דוגמה לבדיקת A/B היא ההשקה של פענוח תמונות ספקולטיבי. זהו שיפור בביצועים שלא אמור להיות מורגש למפתחים או למשתמשים, מלבד העובדה ש-Chrome טוען דפים מהר יותר. כדי לוודא שלא קרה משהו לא צפוי, וכדי למדוד בצורה מדויקת את ההשפעה על הביצועים, השתמשנו ב-Finch כדי לבצע בדיקת A/B.

השבתת תכונה בעייתית

כדי לשמור על בטיחות המוצר ועל חוויית המשתמש, Chrome יכול להשתמש במערכת Finch כדי להשבית מרחוק תכונות בעייתיות שהופעלו 'בקוד'. לדוגמה, אם תכונה הופעלה כברירת מחדל, אבל הבעיות התגלו רק אחרי ש-Chrome הגיע למצב יציב, אנחנו צריכים דרך להשבית את התכונה במהירות כדי להחזיר את המשתמשים והעסקים למצב בטוח. זה יכול להיות נחוץ אם יש באגים שלא התגלו בתכונה, או אם תכונה מסוימת גורמת לשבירה של אתרים קיימים מסיבות בלתי צפויות.

הפעלה של תכונות מסוכנות בצורה בטוחה יותר

ברוב התכונות שמושקות ב-Chrome, הסיכון נמוך כי אנחנו יכולים לבדוק ולאמת שהקוד החדש פועל בכל האתרים.

עם זאת, לפעמים השקת תכונות עלולה להיות מסוכנת למדי, בגלל בעיות תאימות לא ידועות או אינטראקציות מסובכות אחרות. במקרה כזה, אפשר להשתמש במערכת Finch כדי להפעיל את התכונה בפועל, במקום רק לשמור אותה כמתג השבתה.

לדוגמה, שינוי ב "הרפיה" של המערכת לניתוח HTML היה קשור לתכונה החדשה של רכיב select שניתן להתאמה אישית, שמאפשרת להציב יותר תוכן מבעבר בתוך רכיב <select>. יכול להיות שהשינוי הזה ישבש את הפעולה של אתרים קיימים, ולכן היה עלינו להטמיע אותו בזהירות.

הפעלת תכונות באמצעות Finch יכולה להיות בטוחה יותר מהסרה שלהן באמצעות Finch, כי Finch לא מגיע ל-100% מהמשתמשים מסיבות שונות. לדוגמה, למשתמשים מסוימים ב-Enterprise יש מדיניות שאוסרת על הגדרת Finch לחלוטין. המשתמשים האלה יישארו בסיכון במקרה שתכונה תופעל בקוד ואז תושבת באמצעות Finch, כי הם לא יקבלו את ההגדרה של Finch והתכונה תמשיך להיות מופעלת אצלם. אם מפעילים את התכונה באמצעות Finch, אנחנו יכולים להבטיח שאפשר יהיה להשבית אותה לכל המשתמשים במקרה חירום.

איך בודקים אם אתם משתתפים בניסוי של Finch

למשתמשים קשה לעשות את זה ישירות. הדרך המומלצת היא ליצור קשר עם מהנדס Chrome (בדרך כלל בהקשר של באג ב-Chromium) ולשלוח לו את 'רשימת הווריאציות'. זוהי רשימה של גרסאות מקודדות מיוחדות של כל ההגדרות של Finch בדפדפן נתון. אפשר לשחזר אותו בקלות:

  1. נווט אל chrome://version.
  2. מעתינים את כל רשימת הטקסט (כן, היא יכולה להיות ארוכה מאוד) שמופיעה לצד 'וריאציות פעילות'.
  3. מדביקים את הטקסט הזה בקובץ טקסט (לדוגמה, variations.txt) ומצרפים אותו לבאג.

בעזרת רשימת הווריאציות הזו, מהנדסי Chrome יכולים לפענח את הרשימה ולראות אילו תכונות מופעלות או מושבתות בדפדפן שלכם.

מה קורה כשהניסוי של Finch מגיע ל-100% ומוכן להפעלה?

אחרי שנוודא שהניסוי שלנו "הצליח" ושהתכונה המדוברת לא מסכנת את המפתחים או המשתמשים, תמיד נפעיל את התכונה "בקוד". בשלב הזה, אפשר להגדיר תאריך סיום להגדרת Finch, כדי שהיא לא תשפיע על הדפדפנים אחרי הגרסה שבה התכונה הופעלה בקוד.