Zomato — индийский транснациональный агрегатор ресторанов и компания по доставке еды, обслуживающая клиентов в 500 городах только в Индии. Имея более 43 миллионов активных клиентов и более 1,5 миллионов заказов в день, это одна из самых популярных служб заказа и доставки еды в стране. Это также означает, что клиенты используют разнообразный набор устройств и имеют разную доступность сети. Помимо быстрой доставки, это также делает обязательным обеспечение бесперебойной и бесперебойной работы с приложением.
Пользователи ожидают быстрого открытия приложений и быстрого реагирования . Улучшение этого показателя не только напрямую влияет на показатели приложения, но и обеспечивает большее количество выполненных заказов, а также поддерживает стратегию Zomato – выход на новые рынки и улучшение качества обслуживания на устройствах низкого и среднего класса. В конечном итоге это помогает им привлечь следующий миллиард пользователей. Время открытия приложения также служит предиктором увеличения размера воронки продаж по мере того, как пользователи продвигаются дальше по воронке продаж.
И Zomato добилась впечатляющих результатов, сосредоточившись на App Vitals. Например, ускорение загрузки приложения на 30 % привело к улучшению удержания клиентов в первый день примерно на 90 %!
Задача
Быстрый темп разработки Zomato и сосредоточенность на добавлении функций, хотя и были полезны для клиентов, привели к необходимости оптимизировать их кодовую базу и UX. Стремясь к добавлению новых функций, Zomato также хотела поддерживать их производительность на должном уровне. Поскольку несколько SDK потребляли ресурсы, которые не всегда были необходимы, возникла необходимость оптимизировать и рационализировать кодовую базу.
Все это было подкреплено экспансией Zomato в города Индии уровня 2 и 3, где люди в основном используют устройства низкого и среднего уровня с относительно ограниченной вычислительной мощностью. Включив эти устройства, команда должна была обеспечить тот же пользовательский опыт мирового класса, что и на устройствах более высокого уровня.
Что они сделали?
Zomato использовала простой критерий для анализа своих накладных расходов: какое решение может обеспечить максимальную отдачу от инвестиций по сравнению с усилиями команды разработчиков. Используя этот критерий, команда начала четырехмесячный путь оптимизации и улучшения.
Первым шагом было изучение трассировки системы для обнаружения проблем, анализ времени и соответствующая расстановка приоритетов. Perfetto — идеальный инструмент для анализа, профилирования и отслеживания процессов Android. Zomato использовала этот инструмент для отслеживания всех SDK, инициализируемых во время запуска приложения, и выявления тех, которые можно удалить или загрузить лениво.
Удаление устаревших SDK и неиспользуемых 3P-библиотек было главным приоритетом, поскольку это была задача с минимальными усилиями и высокой прибылью. Такой подход помог Zomato сэкономить драгоценные 20% времени запуска приложения.
Многие сторонние библиотеки используют поставщиков контента для инициализации при запуске приложения, что влияет на время запуска приложения. Zomato использует Facebook SDK для входа в систему, но у пользователя есть и другие варианты входа, поэтому инициализация SDK при запуске неэффективна. С появлением библиотеки запуска приложений Zomato загружает SDK только в том случае, если пользователь выбирает вариант входа в Facebook. Это помогло им сократить время запуска примерно на 6%!
Следующим шагом было сокращение времени раздувания представлений, поскольку рендеринг и раздувание самого представления могут занять значительное время в сложной структуре пользовательского интерфейса, такой как у Zomato. Viewstub помогает повысить эффективность, поскольку позволяет создавать представления, но не добавлять их в иерархию представлений, если это не требуется. Заглушки просмотра более эффективны, чем использование View. GONE, поскольку даже если представление находится в состоянии GONE, оно будет раздуваться и потреблять память и процессор. Zomato упростила иерархию представлений и объединила макеты вместе с заглушками представлений в своей активности входа в систему. Эти изменения значительно сократили время инфляции на 7%.
Профилировщик Android помог оптимизировать использование памяти, поскольку позволяет отслеживать активность процессора, памяти и сети в режиме реального времени. Профилировщик позволил им определить основную проблему, связанную с ситуациями блокировки и непроизводительными затратами памяти, и соответствующим образом устранить ее. Zomato также поработала над своим механизмом кэширования, чтобы добиться значительного снижения на 60% проблем с нехваткой памяти.
Действие | До (сек) | Через (сек) | Улучшение |
---|---|---|---|
Удалены устаревшие SDK, неиспользуемые 3P-библиотеки. | 4,873 | 3,813 | 21,74% |
Ленивая загрузка библиотек | 3,814 | 3,577 | 6,2% |
Улучшения макета, заглушки просмотра | 2.529 | 2.348 | 7,15% |
Время запуска приложения = инициализация приложения + время загрузки библиотек + время инфляции просмотра.
Результаты
Повышение производительности Zomato помогло им сделать игру более плавной. Дальнейшие улучшения пользовательского интерфейса и кэширование также уменьшили количество рывков.
Переход приложения на домашнюю страницу (нажатие на значок приложения для перехода на полностью загруженную и пригодную к использованию домашнюю страницу) — это ключевой бизнес-показатель, который Zomato отслеживает внутри компании. После внедрения улучшений они увидели значительный рост этого показателя. Число клиентов, попавших на полностью загруженную страницу, за этот период увеличилось примерно на 20%.
Это привело к улучшению удержания клиентов в первый день примерно на 90%! Эти улучшения также оказали влияние на их прямые воронки: общий коэффициент прохождения заказов (главная страница -> меню -> корзина -> заказ) увеличился примерно на 1,5 процентных пункта, то есть примерно на 600 тыс. заказов за месяц.
Согласно показателю производительности холодного запуска Firebase, улучшение составило в среднем 25 %, а для устройств низкого/среднего уровня улучшение времени холодного запуска приложений достигало 30 %.
Производительность времени запуска приложения — важный показатель, влияющий на восприятие пользователей, и усилия по оптимизации производительности также могут оказать существенное влияние на бизнес.
«В Zomato предоставление и обеспечение превосходного качества обслуживания клиентов всегда было в центре нашей идеологии. Мы считаем, что производительность является одним из ключевых рычагов, и поэтому наша команда стремилась к совершенству в разработке, чтобы сократить время загрузки приложений с помощью инструментов разработчика Google и добилась существенных результатов в режиме реального времени. Благодаря этому мы надеемся предоставить невероятно быстрое приложение для нужд Индии в онлайн-заказах и установить ориентир для нашего будущего развития».
— Саджал Гупта, технический директор, Zomato