JioSaavn که در سال 2007 تأسیس شد، یک سرویس پخش صوتی پیشرو برای موسیقی و پادکست است. آنها بیش از 900 شرکت برچسب دارند و بیش از 80 میلیون آهنگ را به 16 زبان پخش می کنند. برنامه JioSaavn همچنین به 6 زبان هندی منطقه ای موجود است.
با پشته فناوری که بیش از 100 میلیون کاربر فعال ماهانه (MAU) را پشتیبانی می کند، JioSaavn در مقیاس و سرعت عمل می کند. این مخاطبان معمولاً تلفنهای اندرویدی با منابع محدود دارند که تجربه کاربری آنها را برای تیم JioSaavn از اهمیت بالایی برخوردار میکند.
چالش
بهینهسازی در محیطی از محدودیتها، مانند مواردی که در دستگاههای تلفن همراه با قیمت متوسط وجود دارد، از منظر مهندسی میتواند چالشبرانگیز و هیجانانگیز باشد. چالشی که JioSaavn با آن روبرو شد بهینه سازی تجربه کاربری برای مخاطبان هدف اصلی خود با استفاده از دستگاه های تلفن همراه متوسط پایین بود که عمدتاً در شهرهای سطح 2 و 3 هند یافت می شود.
با تجزیه و تحلیل قیف، مشخص شد که بخش قابل توجهی از کاربران وجود دارند که برنامه را راه اندازی می کنند اما به آهنگی گوش نمی دهند. تیم زمان راه اندازی اپلیکیشن را دلیل این امر تشخیص داد. بنابراین، بهبود زمان راه اندازی برنامه با افزایش تعداد شنوندگان در برنامه همراه بود.
چگونه آنها آن را انجام دادند
JioSaavn برای تجزیه و تحلیل این مشکل و رسیدن به یک راه حل پایدار به تجزیه و تحلیل جامع و مجموعه ای قوی از ابزارها مانند Perfetto، dumpsys و غیره متکی بود. تیم با استفاده از دو اصل به این چالش برخورد کرد - کار را موازی کنید و تنبل باشید.
با کمک تجزیه و تحلیل گوگل، تیم وظایف را اولویت بندی کرد -
- از systrace و perfetto برای مطالعه جریان برنامه، تجزیه و تحلیل نقاط درد، اعتبارسنجی بهبود در زمان راهاندازی برنامه استفاده کرد.
- مقداردهی اولیه با تأخیر: مقداردهی اولیه قطعات/نمونهها/کلاسها شناسایی شده است که میتواند تا نمایش صفحه اصلی به تأخیر بیفتد -
- تبلیغات
- سرویس موسیقی (سرویس پیش زمینه) و منابع پخش کننده (به عنوان مثال Exoplayer، صف پخش کننده ذخیره شده و غیره)
- Player Fragment که در زمان راه اندازی به حداقل می رسد.
- مقداردهی اولیه برحسب تقاضا: کتابخانه های مختلف در صورت نیاز و زمانی که کتابخانه مورد نیاز است (به عنوان مثال lib Facebook).
- viewStubs: مشاهده تورم و بارگذاری منابع سنگین بود. این تیم با استفاده از viewStubs چیدمان های خود را مسطح کردند و تصاویر را به webP تبدیل کردند.
- Worker thread: برخی از کارهایی که به رشته UI نیاز نداشتند به رشته های b/g منتقل شدند تا رشته UI آزاد شود.
- تقسیم داده های کش - خواندن و تجزیه داده های ذخیره شده عظیم از یک فایل زمان زیادی می برد. تیم آن را به داده های حیاتی (لازم برای نمایش صفحه اصلی) و غیر حیاتی تقسیم کرد.
- Async LayoutInflater: برخی از نماهای مورد نیاز برای recyclerview صفحه اصلی با استفاده از Async LayoutInflater از قبل پر شده بودند.
ابزارهای مورد استفاده - Perfetto، Systrace، Google play vitals، Android Studio Profilers، Firebase performance SDK
نتایج
تیم JioSaavn این تغییرات را در چندین نسخه از برنامه برای حفظ ثبات برنامه منتشر کرد. آنها به نتایج زیر دست یافتند -
- 30٪ بهبود در زمان راه اندازی برنامه در همه دستگاه ها و 35 - 40٪ در دستگاه های متوسط پایین.
- 5% بهبود در نمایشگرهای صفحه اصلی/DAU، در نتیجه نرخ پرش را کاهش میدهد.
این تمرین بهینه سازی کل تیم را گرد هم آورد. بررسی های دقیق انجام شد تا تیم با تغییرات راحت باشد و رویکردی متمرکز بر عملکرد نسبت به برنامه القا شود.
هدف JioSaavn بهبود تجربه شنیداری کاربران ما که از مناطق مختلف آمدهاند
و شهرهای هند، و از نظر مقرون به صرفه بودن، طیف گسترده ای را در بر می گیرند. بنابراین عبور از زیرساخت اتصال تلفن همراه منطقه آنها و بهینه سازی تجربه کاربری در سراسر قابلیت های دستگاه کاربران، چالشی همیشگی است که ما برای آن تلاش می کنیم. به لطف راهنماییهای ارتباط با توسعهدهندگان گوگل، ما توانستیم گامی قطعی در این مسیر برداریم.»– تیم محصول JioSaavn