מעקב אחר ביצועים של השקות של תכונות

1. סקירה כללית

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

מה תלמדו

  • איך מוסיפים מעקב אחרי ביצועים ב-Firebase לאפליקציה לנייד כדי לקבל מדדים מותאמים אישית (כמו שעת ההתחלה של האפליקציה ופריימים איטיים או קפואים)
  • איך להוסיף מעקבים בהתאמה אישית כדי להבין נתיבי קוד קריטיים של התהליכים שעוברים המשתמשים
  • איך משתמשים בלוח הבקרה של מעקב הביצועים כדי להבין את המדדים ולעקוב אחרי שינויים חשובים, כמו השקה של תכונה
  • איך להגדיר התראות ביצועים כדי לעקוב אחרי המדדים העיקריים
  • איך להשיק שינוי תצורה מרחוק ב-Firebase

דרישות מוקדמות

2. הגדרת הפרויקט לדוגמה

מורידים את הקוד

מריצים את הפקודה הבאה כדי לשכפל את קוד הדוגמה של סדנת הקוד הזו. הפקודה הזו תיצור במחשב תיקייה בשם codelab-perf-rc-android:

$ git clone https://github.com/FirebaseExtended/codelab-feature-rollout-performance.git

אם אין לכם את Git במחשב, תוכלו גם להוריד את הקוד ישירות מ-GitHub.

מייבאים ל-Android Studio את הפרויקט שנמצא בתיקייה firebase-perf-rc-android-start. סביר להניח שיופיעו כמה חריגות בסביבת זמן הריצה או אזהרה לגבי קובץ google-services.json חסר. נתקן את זה בקטע הבא.

בקודלאב הזה תלמדו להשתמש בפלאגין Firebase Assistant כדי לרשום את אפליקציית Android שלכם לפרויקט Firebase ולהוסיף לפרויקט ב-Android את קובצי התצורה, הפלאגינים והיחסי התלות הנדרשים של Firebase – הכול מתוך Android Studio.

קישור האפליקציה ל-Firebase

  1. עוברים אל Android Studio/עזרה > בדיקת עדכונים כדי לוודא שאתם משתמשים בגרסאות העדכניות ביותר של Android Studio ושל Firebase Assistant.
  2. בוחרים באפשרות כלים > Firebase כדי לפתוח את החלונית Assistant.

c0e42ef063d21eab.png

  1. בוחרים באפשרות מעקב אחר ביצועים כדי להוסיף אותה לאפליקציה, ולאחר מכן לוחצים על תחילת העבודה עם מעקב אחר ביצועים.
  2. לוחצים על התחברות ל-Firebase כדי לחבר את פרויקט Android ל-Firebase (הפעולה הזו תפתח את מסוף Firebase בדפדפן).
  3. במסוף Firebase, לוחצים על Add project (הוספת פרויקט) ומזינים שם של פרויקט ב-Firebase (אם כבר יש לכם פרויקט ב-Firebase, תוכלו לבחור את הפרויקט הקיים במקום זאת). לוחצים על המשך ומאשרים את התנאים כדי ליצור את פרויקט Firebase ואפליקציית Firebase חדשה.

לאחר מכן תוצג תיבת דו-שיח כדי לקשר את אפליקציית Firebase החדשה לפרויקט ב-Android Studio.

51a549ebde2fe57a.png

  1. לוחצים על חיבור.
  2. פותחים את Android Studio. בחלונית Assistant יוצג אישור שהאפליקציה מקושרת ל-Firebase.

40c24c4a56a45990.png

הוספת מעקב ביצועים לאפליקציה

בחלונית Assistant ב-Android Studio, לוחצים על הוספת מעקב ביצועים לאפליקציה.

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

3046f3e1f5fea06f.png

בסיום, אמורה להופיע ההודעה על הצלחה בחלונית Assistant ב-Android Studio, עם אישור על כך שכל יחסי התלות מוגדרים בצורה נכונה.

62e79fd18780e320.png

בשלב נוסף, מפעילים רישום ביומן של ניפוי באגים לפי ההוראות בשלב '(אופציונלי) הפעלת רישום ביומן של ניפוי באגים'. אותן הוראות זמינות גם במסמכים הציבוריים.

3. הפעלת האפליקציה

עכשיו אמור להופיע קובץ google-services.json בספריית המודולים (ברמת האפליקציה) של האפליקציה, והאפליקציה אמורה לבצע הידור (compile). ב-Android Studio, לוחצים על Run (הפעלה) > Run 'app' (הפעלת 'app') כדי ליצור ולהריץ את האפליקציה במהדמ של Android.

כשהאפליקציה פועלת, אמור להופיע מסך פתיחה כזה:

ffbd413a6983b205.png

לאחר כמה שניות, בדף הראשי עם תמונת ברירת המחדל יוצגו:

d946cab0df319e50.png

מה קורה מאחורי הקלעים?

מסך הפתיחה מוטמע ב-SplashScreenActivity ומבצע את הפעולות הבאות:

  1. במכשיר onCreate(), אנחנו מאתחלים את ההגדרות של הגדרת התצורה מרחוק ב-Firebase ומאחזרים את ערכי ההגדרות שקבעתם במרכז הבקרה להגדרת תצורה מרחוק מאוחר יותר ב-Codelab הזה.
  2. ב-executeTasksBasedOnRC(), אנחנו קוראים את ערך ההגדרה של הדגל seasonal_image_url. אם כתובת URL מסופקת על ידי ערך התצורה, אנחנו מורידים את התמונה באופן סינכרוני.
  3. לאחר השלמת ההורדה, האפליקציה עוברת אל MainActivity ומבצעת שיחה אל finish() כדי לסיים את SplashScreenActivity.

ב-MainActivity, אם seasonal_image_url הוגדר באמצעות הגדרת תצורה מרחוק, התכונה תופעל והתמונה שהורדתם תוצג כרקע של הדף הראשי. אחרת, תוצג תמונה שמוגדרת כברירת מחדל (כפי שמוצגת למעלה).

4. הגדרת Remote Config

עכשיו, כשהאפליקציה פועלת, אפשר להגדיר את דגל התכונה החדש.

  1. בחלונית השמאלית של מסוף Firebase, מאתרים את הקטע Engage ולוחצים על הגדרת תצורה מרחוק.
  2. לוחצים על הלחצן Create configuration כדי לפתוח את טופס התצורה ולהוסיף את seasonal_image_url כמפתח הפרמטר.
  3. לוחצים על הוספת תיאור ומזינים את התיאור הבא: Shows a seasonal image (replaces default) in the main page when the restaurant list is empty.
  4. לוחצים על הוספת חדש -> ערך מותנה -> יצירת תנאי חדש.
  5. בשדה 'שם התנאי', מזינים Seasonal image rollout.
  6. בקטע Applies if..., בוחרים באפשרות User in random percentile <= 0%. (יש להשאיר את התכונה מושבתת עד שהכול יהיה מוכן להשקה בשלב מאוחר יותר).
  7. לוחצים על יצירת תנאי. תשתמשו בתנאים האלה בהמשך כדי להשיק את התכונה החדשה למשתמשים.

7a07526eb9e81623.png

  1. פותחים את הטופס ליצירת הפרמטר הראשון ומאתרים את השדה ערך להשקה של תמונות עונתיות. מזינים את כתובת ה-URL שבה התמונה העונתית תורד: https://images.unsplash.com/photo-1552691021-7043334e0b51
  2. משאירים את ערך ברירת המחדל כמחרוזת ריקה. פירוש הדבר הוא שתוצג התמונה שמוגדרת כברירת מחדל בקוד, במקום תמונה שהורדתם מכתובת URL.
  3. לוחצים על שמירה.

99e6cd2ebcdced.png

אתם יכולים לראות שההגדרה החדשה נוצרה כטיוטה.

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

39cd3e96d370c7ce.png

5. הוספת מעקב אחרי זמן טעינת הנתונים

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

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

כדי לעקוב אחרי משך הזמן שבו מסך הפתיחה מוצג, מוסיפים מעקב קוד בהתאמה אישית ל-SplashScreenActivity, שהוא ה-Activity שמטמיע את מסך הפתיחה.

  1. לאתחל, ליצור ולהתחיל מעקב אחר קוד בהתאמה אישית בשם splash_screen_trace:

SplashScreenActivity.java

// ...
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;
// ...

public class SplashScreenActivity extends AppCompatActivity {

    private static final String TAG = "SplashScreenActivity";
    private static final String SEASONAL_IMAGE_URL_RC_FLAG = "seasonal_image_url";

    // TODO: Initialize splash_screen_trace
    private final Trace splashScreenTrace = FirebasePerformance.startTrace("splash_screen_trace");
    
    // ...
}
  1. לסיים את המעקב בשיטה onDestroy() של SplashScreenActivity:

SplashScreenActivity.java

@Override
protected void onDestroy() {
    super.onDestroy();

    // TODO: Stop the splash_screen_trace here
    splashScreenTrace.stop();
}

בגלל שהתכונה החדשה מורידה ומעבדת תמונה, יש להוסיף מעקב אחר קוד בהתאמה אישית שיעקוב אחר הזמן הנוסף שבו התכונה נוספה אל SplashScreenActivity.

  1. איך מפעילים, יוצרים ומפעילים מעקב קוד בהתאמה אישית בשם splash_seasonal_image_processing:

SplashScreenActivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    if (!seasonalImageUrl.isEmpty()) {
        // TODO: Start the splash_seasonal_image_processing here
        final Trace seasonalImageProcessingTrace = FirebasePerformance
            .startTrace("splash_seasonal_image_processing");

        // ...
    }
}
  1. מסיימים את המעקב בשתי השיטות onLoadFailed() ו-onResourceReady() של RequestListener:

SplashScreenActivity.java

Glide.with(SplashScreenActivity.this.getApplicationContext())
    .asBitmap()
    .load(seasonalImageUrl)
    .signature(new ObjectKey(Utils.getCacheUUID()))
    .listener(new RequestListener<Bitmap>() {
        @Override
        public boolean onLoadFailed(
            @Nullable GlideException e,
            Object model, Target<Bitmap> target,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }

        @Override
        public boolean onResourceReady(Bitmap resource, Object model,
            Target<Bitmap> target, DataSource dataSource,
            boolean isFirstResource) {

            // TODO: Stop the splash_seasonal_image_processing here
            seasonalImageProcessingTrace.stop();

            launchMainActivity();
            return true;
        }
     })
     .preload();

עכשיו, אחרי שהוספת מעקבי קוד בהתאמה אישית כדי לעקוב אחרי משך הזמן של מסך הפתיחה (splash_screen_trace) וזמן העיבוד של התכונה החדשה (splash_seasonal_image_processing), צריך להפעיל שוב את האפליקציה ב-Android Studio. אמורה להופיע הודעת רישום ביומן שמכילה את הערך Logging trace metric: splash_screen_trace, ואחריו את משך המעקב. לא תופיע הודעה ביומן לגבי splash_seasonal_image_processing כי עדיין לא הפעלתם את התכונה החדשה.

6. הוספת מאפיין מותאם אישית למעקב

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

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

בואו נוסיף מאפיין מותאם אישית שמייצג את כתובת ה-URL של התמונה העונתית למעקבי הקוד המותאמים אישית האלה. כך תוכלו לסנן את נתוני משך הזמן לפי הערכים האלה בהמשך.

  1. צריך להוסיף את המאפיין המותאם אישית (seasonal_image_url_attribute) עבור splash_screen_trace בתחילת ה-method executeTasksBasedOnRC:

SplashScreenActivity.java

private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
    String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
    Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_screen_trace
    if (seasonalImageUrl.isEmpty()) {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", "unset");
    } else {
        splashScreenTrace.putAttribute("seasonal_image_url_attribute", seasonalImageUrl);
    }

    // ...
}
  1. מוסיפים את אותו מאפיין מותאם אישית ל-splash_seasonal_image_processing מיד אחרי הקריאה ל-startTrace("splash_seasonal_image_processing"):

SplashScreenActivity.java

if (!seasonalImageUrl.isEmpty()) {
    // TODO: Start the splash_seasonal_image_processing here
    final Trace seasonalImageProcessingTrace = FirebasePerformance
        .startTrace("splash_seasonal_image_processing");

    // TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_seasonal_image_processing
    seasonalImageProcessingTrace
        .putAttribute("seasonal_image_url_attribute", seasonalImageUrl);

    // ...
}

עכשיו, אחרי שמוסיפים מאפיין מותאם אישית (seasonal_image_url_attribute) לשני נתוני המעקב בהתאמה אישית (splash_screen_trace ו-splash_seasonal_image_processing), מריצים שוב את האפליקציה ב-Android Studio. אמורה להופיע הודעה ביומן שמכילה את הטקסט Setting attribute 'seasonal_image_url_attribute' to 'unset' on trace 'splash_screen_trace'. You have not yet enabled the Remote Config parameter seasonalImageUrl which is why the attribute value is unset.

ה-SDK למעקב ביצועים יאסוף את נתוני המעקב וישלח אותם אל Firebase. אפשר לראות את הנתונים בלוח הבקרה לביצועים במסוף Firebase, עם הסבר מפורט בשלב הבא ב-Codelab.

7. הגדרת לוח הבקרה של מעקב ביצועים

הגדרה של מרכז הבקרה כדי לעקוב אחר התכונה

במסוף Firebase, בוחרים את הפרויקט שבו מותקנת אפליקציית Tell Eats.

בחלונית הימנית, מאתרים את הקטע פרסום ומעקב ולוחצים על ביצועים.

מרכז הבקרה של הביצועים אמור להופיע עם הנקודות הראשונות על הגרף. ה-SDK למעקב ביצועים אוסף נתוני ביצועים מהאפליקציה ומציג אותם תוך כמה דקות ממועד האיסוף.

f57e5450b70034c9.png

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

  1. לוחצים על אחת מהתיבות הריקות של Select a metric.
  2. בתיבת הדו-שיח, בוחרים את סוג המעקב Custom traces ואת שם המעקב splash_screen_trace.

1fb81f4dba3220e0.png

  1. לוחצים על Select metric (בחירת מדד) והמשך הזמן של splash_screen_trace אמור להתווסף למרכז הבקרה.

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

1d465c021e58da3b.png

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

8. השקת התכונה שלך

סיימתם להגדיר את המעקב, ואתם יכולים להשיק את השינוי של הגדרת התצורה מרחוק ב-Firebase (seasonal_image_url) שהגדרתם קודם).

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

  1. לוחצים על הכרטיסייה תנאים בחלק העליון של הדף.
  2. לוחצים על התנאי Seasonal image rollout שהוספתם קודם.
  3. משנים את המאון ל-100%.
  4. לוחצים על שמירת התנאי.
  5. לוחצים על פרסום השינויים ומאשרים את השינויים.

70f993502b27e7a0.png

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

b0cc91b6e48fb842.png

9. בדיקת השינויים בביצועים

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

  1. בכרטיסייה הראשית Dashboard, גוללים למטה לטבלת המעקב אחר נתונים ולוחצים על הכרטיסייה Custom traces. בטבלה הזו יופיעו עקבות הקוד בהתאמה אישית שהוספתם מקודם, וגם כמה עקבות מוכנים מראש.
  2. עכשיו, לאחר שהפעלתם את התכונה החדשה, כדאי לחפש את מעקב הקוד בהתאמה אישית splash_seasonal_image_processing, שמדד את הזמן שלקח להוריד ולעבד את התמונה. בערך משך הזמן של המעקב אפשר לראות שההורדה והעיבוד האלה נמשכים זמן רב.

439adc3ec71805b7.png

  1. מכיוון שיש לך נתונים עבור splash_seasonal_image_processing, אפשר להוסיף את משך הזמן של המעקב הזה ללוח המדדים בחלק העליון של הכרטיסייה מרכז שליטה.

בדומה למה שעשינו קודם, לוחצים על אחת מהתיבות הריקה של Select a metric. בתיבת הדו-שיח, בוחרים את סוג המעקב Custom traces ואת שם המעקב splash_seasonal_image_processing. לסיום, לוחצים על בחירת מדד כדי להוסיף את המדד הזה ללוח המדדים.

7fb64d2340410576.png

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

b1c275c30679062a.png

  1. בדף הפרטים, בצד ימין למטה תופיע רשימה של מאפיינים, כולל המאפיין המותאם אישית שיצרתם מקודם. לוחצים על המאפיין המותאם אישית seasonal_image_url_attribute כדי לראות את משך הזמן של מסך הפתיחה עבור כל כתובת URL של תמונה עונתית בצד שמאל:

8fa1a69019bb045e.png

  1. סביר להניח שהערכים של משך הזמן של מסך הפתיחה יהיו שונים במקצת מאלה שמוצגים בצילום המסך שלמעלה, אבל משך הזמן צריך להיות ארוך יותר כשהתמונה מורידת מכתובת URL בהשוואה לשימוש בתמונה שמוגדרת כברירת מחדל (המיוצגת על ידי 'unset').

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

  1. לוחצים על ביצועים בחלק העליון של הדף כדי לחזור לכרטיסייה הראשית של מרכז הבקרה: 640b696b79d90103.png
  2. בטבלת המעקב שבתחתית הדף, לוחצים על הכרטיסייה בקשות רשת. בטבלה הזו יוצגו כל בקשות הרשת מהאפליקציה נצברות בדפוסי כתובות URL, כולל דפוס כתובת ה-URL images.unsplash.com/**. אם משווים את הערך של זמן התגובה הזה לזמן הכולל שנדרש להורדה ולעיבוד של התמונה (כלומר, משך הזמן של המעקב splash_seasonal_image_processing), אפשר לראות שזמן רב מושקע בהורדת התמונה.

6f92ce0f23494507.png

ממצאי הביצועים

בעזרת מעקב אחר ביצועים ב-Firebase, ראיתם את ההשפעה הבאה על משתמשי הקצה כשהתכונה החדשה הייתה מופעלת:

  1. משך השימוש ב-SplashScreenActivity התארך.
  2. משך הזמן של splash_seasonal_image_processing היה ארוך מאוד.
  3. העיכוב נגרם בגלל זמן התגובה להורדת התמונה וזמן העיבוד התואם שנדרש לתמונה.

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

10. החזרת התכונה לגרסה קודמת

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

כדי לצמצם את הנזק במהירות, צריך לאפס את אחוז ההשקה בחזרה ל-0 כדי שכל המשתמשים יראו שוב את תמונת ברירת המחדל:

  1. חוזרים לדף Remote Config במסוף Firebase.
  2. לוחצים על תנאים בחלק העליון של הדף.
  3. לוחצים על התנאי Seasonal image rollout שהוספתם קודם.
  4. משנים את האחוזון ל-0%.
  5. לוחצים על שמירת התנאי.
  6. לוחצים על פרסום השינויים ומאשרים את השינויים.

18c4f1cbac955a04.png

מפעילים מחדש את האפליקציה ב-Android Studio, ואמור להופיע המסך הראשי המקורי הריק:

d946cab0df319e50.png

11. פתרון בעיות בביצועים

קודם לכן ב-codelab גיליתם שההורדה של תמונה למסך הפתיחה גרמה להאטה באפליקציה. כשבודקים לעומק את התמונה שהורדתם, רואים שאתם משתמשים ברזולוציה המקורית של התמונה, שהיתה גדולה מ-2MB! אחד מהפתרונות המהירים לבעיה בביצועים הוא להפחית את האיכות לרזולוציה מתאימה יותר כדי להוריד את התמונה תוך פחות זמן.

משיקים שוב את הערך של הגדרת התצורה מרחוק

  1. חוזרים אל הדף הגדרת תצורה מרחוק במסוף Firebase.
  2. לוחצים על הסמל Edit (עריכה) של הפרמטר seasonal_image_url.
  3. מעדכנים את הערך של השקת התמונות העונתיות ל-https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640 ולוחצים על שמירה.

828dd1951a2ec4a4.png

  1. לוחצים על הכרטיסייה תנאים בחלק העליון של הדף.
  2. לוחצים על השקה עונתית של תמונות ומגדירים את האחוזון בחזרה ל-100%.
  3. לוחצים על שמירת התנאי.

1974fa3b789f36c.png

  1. לוחצים על הלחצן פרסום השינויים.

12. בדיקת התיקון והגדרת התראות

הפעלת האפליקציה באופן מקומי

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

b0cc91b6e48fb842.png

צפייה בביצועים של השינויים

חוזרים ללוח הבקרה ביצועים במסוף Firebase כדי לראות איך נראים המדדים.

  1. הפעם תשתמשו בטבלת המעקב כדי לנווט לדף הפרטים. בתחתית טבלת המעקב, בכרטיסייה Custom traces (מעקבים מותאמים אישית), לוחצים על המעקב המותאם אישית splash_seasonal_image_processing כדי לראות שוב תצוגה מפורטת יותר של מדד משך הזמן שלו.

2d7aaca03112c062.png

  1. לוחצים על המאפיין המותאם אישית seasonal_image_url_attribute כדי לראות שוב פירוט של המאפיינים המותאמים אישית. אם מעבירים את העכבר מעל כתובות ה-URL, מופיע ערך שתואם לכתובת ה-URL החדשה של התמונה בגודל המופחת: https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640 (עם ?w=640 בסוף). הערך של משך הזמן המשויך לתמונה הזו קצר באופן משמעותי מהערך של התמונה הקודמת ומקובל יותר על המשתמשים.

10e30c037a4237a2.png

  1. עכשיו, אחרי ששיפרתם את הביצועים של מסך הפתיחה, תוכלו להגדיר התראות שיודיעו לכם כשמעקב מסוים חורג מסף שהגדרתם. פותחים את מרכז הבקרה של ביצועים, לוחצים על סמל האפשרויות הנוספות (שלוש נקודות) של אימייל_screen_trace, ואז לוחצים על הגדרות של התראות.

4bd0a2a1faa14479.png

  1. לוחצים על המתג כדי להפעיל את ההתראה משך זמן. צריך להגדיר את ערך הסף כך שיהיה מעט מעל הערך שהוצג לכם, כך שאם הערך של המדד Gmail_screen_trace יחרוג מהסף, יישלח אליכם אימייל.
  1. לוחצים על שמירה כדי ליצור את ההתראה. גוללים למטה אל טבלת המעקב ולוחצים על הכרטיסייה מעקב מותאם אישית כדי לראות שההתראה מופעלת.

2bb93639e2218d1.png

13. כל הכבוד!

כל הכבוד! הפעלתם את ה-SDK למעקב אחר ביצועים ב-Firebase ואספת מעקב כדי למדוד את הביצועים של תכונה חדשה! אתם עוקבים אחרי מדדי הביצועים העיקריים של ההשקה של תכונה חדשה, ומגיבים במהירות כשמתגלה בעיית ביצועים. כל זה אפשרי בזכות היכולת לבצע שינויים בהגדרות באמצעות Remote Config ולעקוב אחרי בעיות בביצועים בזמן אמת.

הנושאים שטיפלנו בהם

  • הוספת ה-SDK של Firebase Performance Monitoring לאפליקציה
  • הוספת מעקב קוד מותאם אישית לקוד כדי למדוד תכונה ספציפית
  • הגדרת פרמטר של Remote Config וערך מותנה כדי לשלוט בהשקה של תכונה חדשה או להפעיל אותה
  • איך להשתמש במרכז הבקרה למעקב אחרי ביצועים כדי לזהות בעיות במהלך השקה
  • הגדרת התראות בנושא ביצועים כדי לקבל התראה כשביצועי האפליקציה חורגים מסף שהגדרתם

מידע נוסף