JioSaavn to założona w 2007 r. wiodąca usługa streamingu audio, która oferuje muzykę i podcasty. Współpracują z ponad 900 wytwórniami i oferują ponad 80 milionów utworów w 16 językach. Aplikacja JioSaavn jest też dostępna w 6 językach regionalnych Indii.
JioSaavn działa na dużą skalę i z dużą szybkością dzięki infrastrukturze technicznej, która obsługuje ponad 100 milionów aktywnych użytkowników miesięcznie. Ta grupa odbiorców zwykle korzysta z telefonów z Androidem o ograniczonych zasobach, dlatego zespół JioSaavn przykłada ogromną wagę do ich wygody.
Wyzwanie
Optymalizacja w środowisku z ograniczeniami, takim jak urządzenia mobilne z niższej i średniej półki, może być z inżynierskiego punktu widzenia zarówno trudna, jak i ekscytująca. Wyzwaniem dla JioSaavn było zoptymalizowanie wrażeń użytkowników z kluczowej grupy docelowej korzystających z urządzeń mobilnych z niższej i średniej półki, którzy mieszkają głównie w miastach w Indiach na poziomach 2 i 3.
Analiza ścieżki wykazała, że spora grupa użytkowników uruchamiała aplikację, ale nie słuchała żadnej piosenki. Zespół ustalił, że przyczyną tego stanu rzeczy jest czas uruchamiania aplikacji. Dlatego skrócenie czasu uruchamiania aplikacji wiązało się ze wzrostem liczby słuchaczy w aplikacji.
Jak to zrobili
Firma JioSaavn przeprowadziła kompleksową analizę i skorzystała z solidnego zestawu narzędzi, takich jak Perfetto czy dumpsys, aby przeanalizować ten problem i znaleźć trwałe rozwiązanie. Zespół podjął to wyzwanie, kierując się dwiema zasadami: równoległością pracy i lenistwem.
Dzięki analizie Google zespół ustalił priorytety zadań:
- Używałem narzędzi systrace i perfetto do analizowania przepływu aplikacji, identyfikowania problemów i sprawdzania, czy czas uruchamiania aplikacji się poprawił.
- Opóźniona inicjalizacja: zidentyfikowane fragmenty, instancje lub klasy, których inicjalizację można opóźnić do momentu wyświetlenia strony głównej.
- Reklamy
- Usługa muzyczna (usługa na pierwszym planie) i zasoby odtwarzacza (np.Exoplayer, buforowana kolejka odtwarzacza itp.)
- Fragment odtwarzacza, który jest zminimalizowany w momencie uruchomienia.
- Inicjowanie na żądanie: różnych bibliotek w miarę potrzeby (np. biblioteki Facebooka).
- viewStubs: View Inflation and resource loading was heavy. Zespół spłaszczył układy za pomocą viewStubs i przekonwertował obrazy na format WebP.
- Wątek roboczy: niektóre zadania, które nie wymagały wątku interfejsu, zostały przeniesione do wątków w tle, aby zwolnić wątek interfejsu.
- Dzielenie danych z pamięci podręcznej – odczytywanie i parsowanie ogromnych ilości danych z pamięci podręcznej z pliku zajmuje dużo czasu. Zespół podzielił je na dane krytyczne (niezbędne do wyświetlania strony głównej) i niekrytyczne.
- Async LayoutInflater: niektóre widoki wymagane w przypadku widoku RecyclerView na stronie głównej zostały wstępnie utworzone za pomocą Async LayoutInflater.
Używane narzędzia: Perfetto, Systrace, statystyki Google Play, profiler w Android Studio, pakiet SDK Firebase Performance
Wyniki
Zespół JioSaavn wprowadził te zmiany w kilku wersjach aplikacji, aby zachować jej stabilność. Osiągnęli oni następujące wyniki:
- 30% – wzrost szybkości uruchamiania aplikacji na wszystkich urządzeniach i 35–40% – na urządzeniach z niższej i średniej półki.
- Zwiększenie liczby użytkowników ekranu głównego w stosunku do liczby aktywnych użytkowników dziennie o 5%, co zmniejszy współczynnik odrzuceń.
To ćwiczenie optymalizacyjne zjednoczyło cały zespół. Przeprowadzono szczegółowe szkolenia, aby zespół mógł się zapoznać ze zmianami i przyjąć podejście do aplikacji oparte na skuteczności.
„JioSaavn ma na celu poprawę komfortu słuchania dla użytkowników z różnych regionów
i miast w Indiach, którzy mają różne możliwości finansowe. Dlatego pokonywanie ograniczeń infrastruktury łączności mobilnej w danym regionie i optymalizowanie wygody użytkowników na różnych urządzeniach to ciągłe wyzwanie, z którym się mierzymy. Dzięki wskazówkom zespołu ds. relacji z deweloperami Google mogliśmy zrobić zdecydowany krok w tym kierunku”.– Zespół produktu JioSaavn