הגדלת מהירות האפליקציה ב-30%: מרכיב מרכזי במתכון לצמיחה של Zomato

‫Zomato היא חברה הודית רב-לאומית שמספקת שירותי משלוחי מזון וריכוז מסעדות ללקוחות ב-500 ערים בהודו בלבד. עם יותר מ-43 מיליון לקוחות פעילים ויותר מ-1.5 מיליון הזמנות בממוצע ביום, זו אחת מהחברות הפופולריות ביותר במדינה להזמנת אוכל ולמשלוחי אוכל. המשמעות היא גם שהלקוחות משתמשים במגוון רחב של מכשירים, וזמינות הרשת שלהם משתנה. בנוסף למשלוחים מהירים, חשוב גם לספק חוויית משתמש חלקה ונוחה באפליקציה.

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

בנוסף, חברת Zomato השיגה שיפורים משמעותיים בעקבות התמקדות במדדים החיוניים של האפליקציה. לדוגמה, קיצור זמן הטעינה של האפליקציה ב-30% הוביל לשיפור של כ-90% בשימור הלקוחות ביום הראשון!

האתגר

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

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

מה הם עשו?

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

השלב הראשון היה לבדוק את עקבות המערכת כדי למצוא בעיות, לבצע ניתוח לפי זמן ולתעדף בהתאם. ‫Perfetto הוא הכלי המושלם לניתוח, ליצירת פרופילים ולמעקב אחרי תהליכי Android. חברת Zomato השתמשה בכלי כדי לעקוב אחרי כל ערכות ה-SDK שעוברות אתחול במהלך הפעלת האפליקציה, ולציין את אלה שאפשר להסיר או לטעון באופן עצלני.

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

ספריות רבות של צד שלישי משתמשות בספקי תוכן כדי לבצע אתחול בזמן הפעלת האפליקציה, וזה משפיע על זמן ההפעלה של האפליקציה. אפליקציית Zomato משתמשת ב-Facebook SDK להתחברות, אבל למשתמש יש גם אפשרויות התחברות אחרות, ולכן אתחול ה-SDK בהפעלה לא יעיל. עם ההשקה של ספריית הפעלת האפליקציה, מערכת Zomato טוענת את ה-SDK רק אם המשתמש בוחר באפשרות הכניסה באמצעות פייסבוק. השימוש ב-API הזה עזר להם לקצר את זמן ההפעלה בכ-6%.

השלב הבא היה שיפור זמן הניפוח של התצוגות, כי העיבוד והניפוח של התצוגה עצמה יכולים לקחת זמן משמעותי במבנה מורכב של ממשק משתמש כמו זה של Zomato. Viewstub עוזר להגדיל את היעילות כי הוא מאפשר ליצור תצוגות אבל לא להוסיף אותן להיררכיית התצוגות אלא אם נדרש. מודעות Viewstubs יעילות יותר משימוש במודעות עם קריאה לפעולה 'צפייה'. GONE כי גם אם התצוגה במצב GONE, היא תתנפח ותגרום לשימוש רב בזיכרון ובמעבד. ב-Zomato, היררכיית התצוגה שוטחה והפריסות מוזגו יחד עם viewstubs בפעילות הכניסה. השינויים האלה שיפרו משמעותית את זמן הניפוח ב-7%.

הכלי Android profiler עזר באופטימיזציה של השימוש בזיכרון, כי הוא מאפשר לעקוב אחרי פעילות המעבד, הזיכרון והרשת בזמן אמת. הכלי ליצירת פרופילים אפשר להם לזהות את שורש הבעיה במצבי הנעילה ובשימוש היתר בזיכרון, ולתקן אותה בהתאם. בנוסף, חברת Zomato עבדה על מנגנון ה-caching שלה כדי להפחית באופן משמעותי את הבעיות שקשורות לזיכרון, בשיעור של 60%.

פעולה לפני (שניות) אחרי (שניות) שיפור
הסרנו ערכות SDK מדור קודם וספריות צד שלישי שלא בשימוש 4.873 3.813 21.74%
ספריות של טעינה מדורגת 3.814 3.577 6.2%
שיפורים בפריסה, viewstubs 2.529 2.348 ‫7.15%

זמן ההפעלה של האפליקציה = אתחול האפליקציה + זמן הטעינה של הספריות + זמן הניפוח של התצוגה

תוצאות

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

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

השינוי הזה הוביל לשיפור של כ-90% בשיעור השימור של לקוחות ביום הראשון! השיפורים האלה השפיעו גם על המשפכים שלהם – שיעור ההמרה הכולל (דף הבית -> תפריט -> עגלת קניות -> הזמנה) השתפר בכ-1.5 נקודות אחוז, כלומר בכ-600,000 הזמנות מחודש לחודש.

לפי מדד ההפעלה במצב התחלתי של Firebase Performance, חל שיפור של 25% בממוצע, ובמכשירים ברמת מחיר נמוכה או בינונית, השיפור בזמן ההפעלה של האפליקציה במצב התחלתי הגיע ל-30%.

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

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

— סאג'אל גופטה (Sajal Gupta), מנהל הנדסה, Zomato