Zomato یک شرکت چندملیتی جمعآوری و تحویل غذا در هند است که تنها در 500 شهر در هند به مشتریان خدمات ارائه میدهد. با بیش از 43 میلیون مشتری فعال و 1.5 میلیون سفارش متوسط در روز، یکی از محبوب ترین خدمات سفارش و تحویل غذا در کشور است. این همچنین به این معنی است که مشتریان از طیف متنوعی از دستگاه ها استفاده می کنند و در دسترس بودن شبکه متفاوتی دارند. علاوه بر تحویل سریع، این امر همچنین داشتن تجربه ای روان و بدون درز در برنامه را ضروری می کند.
کاربران انتظار دارند زمان باز شدن سریع برنامه و پاسخگویی را داشته باشند. بهبود این معیار نه تنها مستقیماً بر App Vitals تأثیر میگذارد، بلکه تکمیل سفارشهای بیشتر را تضمین میکند و از استراتژی Zomato پشتیبانی میکند - گسترش به بازارهای جدید و امکان تجربه بهتر در دستگاههای رده پایین تا متوسط. این در نهایت به آنها کمک میکند تا میلیاردها کاربر بعدی خود را جذب کنند. زمان باز برنامه همچنین به عنوان یک پیش بینی برای افزایش اندازه قیف عمل می کند زیرا کاربران آنها در قیف فروش بیشتر حرکت می کنند.
و Zomato از تمرکز بر App Vitals دستاوردهای چشمگیری کسب کرد. به عنوان مثال، سرعت بخشیدن به زمان بارگذاری برنامه تا 30٪ منجر به بهبود حفظ مشتری در روز اول تا حدود 90٪ شد!
چالش
سرعت توسعه سریع Zomato و تمرکز بر ویژگیهای اضافه شده، اگرچه برای مشتریان عالی است، منجر به نیاز به بهینهسازی پایگاه کد و UX آنها شد. در حالی که Zomato در پی افزودن ویژگی های جدید بود، می خواست عملکرد خود را نیز در حد یکسان نگه دارد. با استفاده از چندین SDK منابعی که همیشه مورد نیاز نبودند، نیاز به سادهسازی و منطقیسازی پایگاه کد وجود داشت.
همه اینها با گسترش Zomato به شهرهای Tier 2 و Tier 3 در هند، که در آن مردم عمدتاً از دستگاه های سطح پایین تا متوسط با ظرفیت پردازش نسبتاً محدود استفاده می کنند، پشتیبانی می شود. با گنجاندن این دستگاهها، تیم باید از همان تجربه کاربری در کلاس جهانی مانند دستگاههای سطح بالاتر اطمینان حاصل میکرد.
چه کار کردند؟
Zomato از یک روبریک ساده برای تجزیه و تحلیل سربار خود استفاده کرد - کدام راه حل می تواند بهترین بازگشت سرمایه را در مقابل تلاش تیم توسعه ارائه دهد. با استفاده از این روبریک، تیم با یک سفر طولانی 4 ماهه بهینه سازی و بهبود شروع کرد.
اولین قدم بررسی ردپای سیستم برای یافتن مسائل، تجزیه و تحلیل مبتنی بر زمان و اولویت بندی بر اساس آن بود. Perfetto ابزاری عالی برای تجزیه و تحلیل، نمایه و ردیابی فرآیندهای اندروید است. Zomato از این ابزار برای ردیابی تمام SDK هایی که در حین راه اندازی برنامه مقداردهی اولیه می شوند، استفاده کرد و به مواردی اشاره کرد که می توانند به راحتی حذف یا بارگذاری شوند.
حذف SDK های قدیمی و کتابخانه های 3P استفاده نشده اولویت اصلی بود زیرا کاری کم تلاش و سود بالا بود. این رویکرد به Zomato کمک کرد تا 20٪ در زمان راه اندازی برنامه صرفه جویی کند.
بسیاری از کتابخانه های شخص ثالث از ارائه دهندگان محتوا برای شروع اولیه برنامه استفاده می کنند که بر زمان راه اندازی برنامه تأثیر می گذارد. Zomato از Facebook SDK برای ورود استفاده می کند، اما کاربر گزینه های ورود دیگری نیز دارد، بنابراین مقداردهی اولیه SDK در هنگام راه اندازی ناکارآمد است. با معرفی کتابخانه App Startup ، Zomato تنها در صورتی SDK را بارگیری می کند که کاربر به گزینه ورود به سیستم فیس بوک مراجعه کند. این به آنها کمک کرد تا زمان راه اندازی را تا 6٪ کاهش دهند!
گام بعدی بهبود زمان تورم نماها بود، زیرا رندر و تورم خود نما می تواند زمان قابل توجهی را در یک ساختار UI پیچیده مانند Zomato's ببرد. Viewstub به افزایش کارایی کمک می کند زیرا اجازه می دهد نماها ایجاد شوند اما به سلسله مراتب view اضافه نمی شوند مگر اینکه نیاز باشد. Viewstabs کارآمدتر از View است. GONE حتی اگر نما در حالت GONE باشد، در حال باد شدن است و مصرف حافظه و CPU را از بین خواهد برد. Zomato سلسله مراتب دید خود را مسطح کرد و طرحبندیها را همراه با viewstab در فعالیت ورود به سیستم خود ادغام کرد. این تغییرات زمان تورم را به میزان قابل توجهی 7 درصد بهبود بخشید.
نمایه ساز اندروید به بهینه سازی استفاده از حافظه کمک کرد، زیرا امکان ردیابی فعالیت CPU، حافظه و شبکه را در زمان واقعی فراهم می کند. نمایه ساز آنها را قادر می سازد تا مشکل ریشه را برای موقعیت های قفل و سربار حافظه شناسایی کرده و بر اساس آن برطرف کنند. Zomato همچنین بر روی مکانیسم کش خود کار کرد تا به کاهش 60 درصدی مشکلات حافظه دست یابد.
اقدام | قبل از (ثانیه) | پس از (ثانیه) | بهبود |
---|---|---|---|
SDKهای قدیمی، کتابخانه های 3P استفاده نشده حذف شدند | 4.873 | 3.813 | 21.74٪ |
کتابخانه ها در حال بارگذاری تنبل | 3.814 | 3.577 | 6.2٪ |
بهبود چیدمان، نماها | 2.529 | 2.348 | 7.15٪ |
زمان راه اندازی برنامه = مقداردهی اولیه برنامه + زمان بارگذاری کتابخانه ها + مشاهده زمان تورم
نتایج
دستاوردهای عملکرد Zomato به آنها کمک کرد تا تجربهای بسیار روانتر ایجاد کنند. بهبودهای بیشتر UI و حافظه پنهان، janking را نیز کاهش داد.
برنامه به صفحه اصلی (کلیک کردن روی نماد برنامه برای یک صفحه اصلی کاملاً بارگذاری شده و قابل استفاده) یک معیار تجاری کلیدی است که Zomato به صورت داخلی آن را ردیابی می کند. پس از اجرای بهبودها، آنها شاهد افزایش معنی داری در این معیار بودند. مشتریانی که در یک صفحه کاملا بارگذاری شده قرار گرفتند در این مدت حدود 20 درصد افزایش یافتند.
این منجر به بهبود در حفظ مشتری در روز اول تا حدود 90٪ شد! این پیشرفتها روی قیفهای رو به جلو آنها نیز تأثیری قطرهای داشت - نرخ کلی سفارش (صفحه اصلی -> منو -> سبد خرید -> سفارش) تا 1.5 درصد بهبود یافت، یعنی حدود 600 هزار سفارش مادر.
با توجه به معیار اجرای سرد راهاندازی Firebase، به طور متوسط 25% بهبود داشت و برای دستگاههای پایین و متوسط، بهبود زمان راهاندازی برنامه سرد تا 30% رسید.
عملکرد زمان راهاندازی اپلیکیشن یک معیار مهم است که بر ادراک کاربر تأثیر میگذارد و تلاشهای سرمایهگذاری برای بهینهسازی عملکرد میتواند تأثیر قابلتوجهی بر کسبوکار نیز داشته باشد.
در Zomato، ارائه و ایجاد یک تجربه شگفت انگیز مشتری همیشه در مرکز ایدئولوژی ما بوده است. ما بر این باوریم که عملکرد یکی از اهرمهای کلیدی است و از این رو تیم ما برای بهبود زمان بارگذاری برنامه با استفاده از ابزارهای توسعهدهنده Google و مشاهده نتایج قابلتوجه در زمان واقعی، به سمت برتری مهندسی تلاش کرد. با این کار، ما امیدواریم که بتوانیم یک برنامه سریع برای نیازهای سفارش آنلاین هند ارائه کنیم و معیاری برای توسعه آینده خود قرار دهیم.
- سجال گوپتا، مدیر مهندسی زوماتو