Zwiększenie szybkości działania aplikacji o 30% – kluczowy składnik przepisu na sukces Zomato

Zomato to indyjska międzynarodowa firma zajmująca się agregowaniem restauracji i dostawą jedzenia. Obsługuje klientów w ponad 500 miastach w samych Indiach. Z ponad 43 milionami aktywnych klientów i średnio ponad 1, 5 miliona zamówień dziennie jest to jedna z najpopularniejszych usług zamawiania i dostawy jedzenia w kraju. Oznacza to również, że klienci korzystają z różnych urządzeń i mają różną dostępność sieci. Oprócz szybkich dostaw ważne jest też zapewnienie płynnego i wygodnego korzystania z aplikacji.

Użytkownicy oczekują szybkiego otwierania aplikacji i jej responsywności. Poprawa tego wskaźnika nie tylko bezpośrednio wpływa na podstawowe wskaźniki aplikacji, ale także zapewnia większą liczbę zrealizowanych zamówień i wspiera strategię Zomato, która polega na ekspansji na nowe rynki i zapewnianiu lepszych wrażeń na urządzeniach z niższej i średniej półki.W rezultacie pomaga to firmie zdobyć kolejny miliard użytkowników. Czas otwarcia aplikacji jest też wskaźnikiem zwiększenia rozmiaru ścieżki, ponieważ użytkownicy przechodzą przez kolejne etapy ścieżki sprzedaży.

Firma Zomato osiągnęła imponujące wyniki dzięki skupieniu się na podstawowych wskaźnikach aplikacji. Na przykład przyspieszenie wczytywania aplikacji o 30% spowodowało wzrost utrzymania klientów w 1 dniu o około 90% !

Wyzwanie

Szybkie tempo rozwoju i skupienie się na dodawaniu funkcji, choć korzystne dla klientów, spowodowało, że firma Zomato musiała zoptymalizować bazę kodu i UX. Zomato chciało dodać nowe funkcje, ale jednocześnie utrzymać dotychczasową skuteczność. Wiele pakietów SDK zużywało zasoby, które nie zawsze były potrzebne, dlatego konieczne było usprawnienie i uproszczenie bazy kodu.

Wszystko to było możliwe dzięki ekspansji Zomato w miastach poziomu 2 i 3 w Indiach, gdzie ludzie w większości korzystają z urządzeń z niższej i średniej półki o stosunkowo ograniczonej mocy obliczeniowej. W przypadku tych urządzeń zespół musiał zadbać o tak samo wysoki poziom komfortu obsługi jak w przypadku urządzeń z wyższej półki.

Co zrobili?

Firma Zomato użyła prostej rubryki do analizy kosztów ogólnych – które rozwiązanie może zapewnić najlepszy zwrot z inwestycji w porównaniu z nakładem pracy zespołu programistów. Korzystając z tej rubryki, zespół rozpoczął 4-miesięczny proces optymalizacji i ulepszania.

Pierwszym krokiem było przeanalizowanie śladów systemu w celu znalezienia problemów, przeprowadzenie analizy czasowej i odpowiednie ustalenie priorytetów. Perfetto to idealne narzędzie do analizowania, profilowania i śledzenia procesów Androida. Firma Zomato wykorzystała to narzędzie do śledzenia wszystkich pakietów SDK inicjowanych podczas uruchamiania aplikacji i wskazywania tych, które można usunąć lub wczytywać z opóźnieniem.

Usunięcie starszych pakietów SDK i nieużywanych bibliotek innych firm było priorytetem, ponieważ było to zadanie o niskim nakładzie pracy i wysokiej skuteczności. Dzięki temu Zomato zaoszczędziło 20% czasu uruchamiania aplikacji.

Wiele bibliotek innych firm używa dostawców treści do inicjowania podczas uruchamiania aplikacji, co wpływa na czas jej uruchamiania. Zomato używa pakietu Facebook SDK do logowania, ale użytkownik ma też inne opcje logowania, więc inicjowanie pakietu SDK przy uruchamianiu jest nieefektywne. Po wprowadzeniu biblioteki uruchamiania aplikacji Zomato wczytuje pakiet SDK tylko wtedy, gdy użytkownik wybierze opcję logowania przez Facebooka. Dzięki temu udało im się skrócić czas uruchamiania o około 6%.

Kolejnym krokiem było skrócenie czasu tworzenia widoków, ponieważ renderowanie i tworzenie widoku może zająć sporo czasu w przypadku złożonej struktury interfejsu, takiej jak w aplikacji Zomato. ViewStub zwiększa wydajność, ponieważ umożliwia tworzenie widoków, ale nie dodaje ich do hierarchii widoków, chyba że jest to wymagane. Viewstuby są skuteczniejsze niż używanie View. GONE, ponieważ nawet jeśli widok jest w stanie GONE, będzie powiększany i będzie zużywać pamięć oraz moc procesora. Zomato spłaszczyło hierarchię widoków i połączyło układy wraz z elementami ViewStub w aktywności logowania. Te zmiany znacznie skróciły czas pompowania o 7%.

Profiler Androida pomógł w optymalizacji wykorzystania pamięci, ponieważ umożliwia śledzenie aktywności procesora, pamięci i sieci w czasie rzeczywistym. Profiler umożliwił im zidentyfikowanie głównego problemu związanego z blokowaniem i nadmiernym obciążeniem pamięci oraz jego rozwiązanie. Firma Zomato pracowała też nad mechanizmem buforowania, aby znacznie ograniczyć problemy z brakiem pamięci (o 60%).

Działanie Przed (w sekundach) Po (w sekundach) Ulepszenie
Usunięto starsze pakiety SDK i nieużywane biblioteki innych firm 4873 3813 21,74%
Biblioteki leniwego ładowania 3,814 3577 6,2%
Ulepszenia układu, widoki zastępcze 2529 2348 7,15%

Czas uruchomienia aplikacji = Inicjowanie aplikacji + Czas wczytywania bibliotek + Czas tworzenia widoku

Wyniki

Wzrost wydajności Zomato pomógł w zapewnieniu znacznie płynniejszego działania. Dalsze ulepszenia interfejsu użytkownika i pamięci podręcznej, a także ograniczenie zacinania się.

Przejście z aplikacji na stronę główną (kliknięcie ikony aplikacji, aby przejść do w pełni załadowanej i gotowej do użycia strony głównej) to kluczowy wskaźnik biznesowy, który Zomato śledziło wewnętrznie. Po wprowadzeniu ulepszeń zaobserwowali znaczący wzrost tej wartości. Liczba klientów, którzy trafili na w pełni załadowaną stronę, wzrosła w tym okresie o około 20%.

Dzięki temu utrzymanie klientów w pierwszym dniu wzrosło o około 90%! Te ulepszenia wpłynęły też na kolejne etapy ścieżki – ogólny współczynnik zamówień (strona główna –> menu –> koszyk –> zamówienie) wzrósł o ok.1,5 punktu procentowego, czyli o około 600 tys.zamówień w porównaniu z poprzednim miesiącem.

Według wskaźnika uruchomienia „na zimno” w Firebase Performance średni wzrost wyniósł 25%, a w przypadku urządzeń z niższej i średniej półki czas uruchamiania aplikacji „na zimno” skrócił się nawet o 30%.

Czas uruchamiania aplikacji to ważny wskaźnik wpływający na postrzeganie aplikacji przez użytkowników. Inwestowanie w optymalizację wydajności może mieć też znaczący wpływ na firmę.

„W Zomato zawsze stawialiśmy na pierwszym miejscu zapewnienie klientom jak najlepszych wrażeń. Uważamy, że wydajność jest jednym z kluczowych czynników, dlatego nasz zespół dążył do doskonałości technicznej, aby skrócić czas wczytywania aplikacji za pomocą narzędzi dla deweloperów Google. W czasie rzeczywistym zaobserwowaliśmy znaczące rezultaty. Mamy nadzieję, że dzięki temu zapewnimy błyskawiczną aplikację, która zaspokoi potrzeby związane z zamówieniami online w Indiach, i wyznaczymy standardy dla naszego przyszłego rozwoju”.

– Sajal Gupta, menedżer ds. inżynierii, Zomato