Zomato est une multinationale indienne spécialisée dans l'agrégation de restaurants et la livraison de repas. Elle dessert des clients dans 500 villes en Inde. Avec plus de 43 millions de clients actifs et plus de 1,5 million de commandes en moyenne par jour, il s'agit de l'un des services de commande et de livraison de repas les plus populaires du pays. Cela signifie également que les clients utilisent une gamme variée d'appareils et que la disponibilité du réseau varie. En plus de la rapidité des livraisons, il est impératif de proposer une expérience fluide et sans interruption dans l'application.
Les utilisateurs s'attendent à ce que les applications s'ouvrent rapidement et soient réactives. L'amélioration de cette métrique a un impact direct sur les données vitales de l'application, mais permet également d'enregistrer plus de commandes et soutient la stratégie de Zomato, qui consiste à s'étendre à de nouveaux marchés et à offrir une meilleure expérience sur les appareils de milieu et d'entrée de gamme.Cela l'aide en fin de compte à conquérir son prochain milliard d'utilisateurs. Les temps d'ouverture des applications servent également de prédicteur pour une taille d'entonnoir accrue, car leurs utilisateurs progressent plus loin dans l'entonnoir de vente.
Zomato a enregistré des gains impressionnants en se concentrant sur les statistiques vitales de son application. Par exemple, en réduisant le temps de chargement de l'application de 30 %, la fidélisation des clients au premier jour a augmenté d'environ 90 %.
Le défi
Le rythme de développement rapide de Zomato et l'accent mis sur l'ajout de fonctionnalités, bien que bénéfiques pour les clients, ont entraîné la nécessité d'optimiser leur code et leur UX. Tout en souhaitant ajouter de nouvelles fonctionnalités, Zomato voulait également maintenir ses performances à un niveau satisfaisant. Avec plusieurs SDK consommant des ressources qui n'étaient pas toujours nécessaires, il était nécessaire de rationaliser et de simplifier la base de code.
Tout cela a été soutenu par l'expansion de Zomato dans les villes indiennes de niveau 2 et 3, où les utilisateurs utilisent principalement des appareils de milieu et d'entrée de gamme avec une capacité de traitement relativement limitée. L'équipe a dû s'assurer que l'expérience utilisateur était aussi bonne sur ces appareils que sur ceux de catégorie supérieure.
Qu'a-t-il fait ?
Zomato a utilisé une grille simple pour analyser ses frais généraux : quelle solution peut offrir le meilleur retour sur investissement par rapport à l'effort de l'équipe de développement ? À l'aide de cette grille, l'équipe a entamé un processus d'optimisation et d'amélioration de quatre mois.
La première étape consistait à examiner les traces système pour identifier les problèmes, effectuer une analyse temporelle et les hiérarchiser en conséquence. Perfetto est l'outil idéal pour analyser, profiler et tracer les processus Android. Zomato a utilisé l'outil pour suivre tous les SDK initialisés au démarrage de l'application et identifier ceux qui pouvaient être supprimés ou chargés de manière différée.
La priorité était de supprimer les anciens SDK et les bibliothèques tierces inutilisées, car il s'agissait d'une tâche à faible effort et à fort gain. Cette approche a permis à Zomato de gagner un temps précieux de 20 % lors du démarrage de l'application.
De nombreuses bibliothèques tierces utilisent des fournisseurs de contenu pour s'initialiser au démarrage de l'application, ce qui affecte le temps de démarrage de l'application. Zomato utilise le SDK Facebook pour la connexion, mais l'utilisateur dispose également d'autres options de connexion. L'initialisation du SDK au démarrage est donc inefficace. Avec l'introduction de la bibliothèque App Startup, Zomato ne charge le SDK que si l'utilisateur choisit l'option de connexion Facebook. Cela leur a permis de réduire le temps de démarrage d'environ 6 %.
L'étape suivante consistait à améliorer le temps d'inflation des vues, car le rendu et l'inflation de la vue elle-même peuvent prendre beaucoup de temps dans une structure d'UI complexe comme celle de Zomato. Viewstub permet d'accroître l'efficacité, car il permet de créer des vues sans les ajouter à la hiérarchie des vues, sauf si cela est nécessaire. Les ViewStubs sont plus efficaces que les View. GONE, car même si la vue est à l'état GONE, elle sera gonflée et consommera de la mémoire et du processeur. Zomato a aplati sa hiérarchie de vues et fusionné des mises en page avec des ViewStubs dans son activité de connexion. Ces modifications ont permis de réduire considérablement le temps de gonflage de 7 %.
Le Profileur Android a permis d'optimiser l'utilisation de la mémoire, car il permet de suivre l'activité du processeur, de la mémoire et du réseau en temps réel. Le profileur leur a permis d'identifier le problème à l'origine des situations de blocage et des surcharges de mémoire, et de le résoudre en conséquence. Zomato a également travaillé sur son mécanisme de mise en cache pour réduire considérablement les problèmes de mémoire insuffisante (60 %).
Action | Avant (s) | Après (s) | Amélioration |
---|---|---|---|
Suppression des anciens SDK et des bibliothèques tierces inutilisées | 4.873 | 3.813 | 21,74 % |
Chargement différé des bibliothèques | 3.814 | 3.577 | 6,2 % |
Améliorations de la mise en page, viewstubs | 2,529 | 2,348 | 7,15 % |
Temps de démarrage de l'application = Temps d'initialisation de l'application + Temps de chargement des bibliothèques + Temps d'inflation de la vue
Résultats
Les gains de performances de Zomato lui ont permis de créer une expérience beaucoup plus fluide. Améliorations supplémentaires de l'UI et de la mise en cache, réduction des saccades également.

Le passage de l'application à la page d'accueil (en cliquant sur l'icône de l'application pour accéder à une page d'accueil entièrement chargée et utilisable) est une métrique commerciale clé que Zomato a suivie en interne. Une fois les améliorations implémentées, l'entreprise a constaté une augmentation significative de cette métrique. Le nombre de clients ayant accédé à une page entièrement chargée a augmenté d'environ 20 % au cours de cette période.
Cela a permis d'améliorer la fidélisation des clients au premier jour d'environ 90 %. Ces améliorations ont également eu un impact sur leurs entonnoirs de conversion. Le taux de commande global (accueil > menu > panier > commande) a augmenté d'environ 1,5 point de pourcentage, soit environ 600 000 commandes en plus par mois.
Selon la métrique de démarrage à froid de Firebase Performance, l'amélioration moyenne était de 25 %, et pour les appareils bas et milieu de gamme, le temps de démarrage à froid de l'application a été réduit jusqu'à 30 %.
Le temps de démarrage de l'application est une métrique importante qui affecte la perception des utilisateurs. Les efforts d'optimisation des performances peuvent également avoir un impact significatif sur l'activité.
"Chez Zomato, nous avons toujours mis l'accent sur l'expérience client. Nous pensons que les performances sont l'un des principaux leviers. C'est pourquoi notre équipe s'est efforcée d'atteindre l'excellence en ingénierie pour améliorer les temps de chargement des applications à l'aide des outils pour les développeurs de Google. Nous avons obtenu des résultats importants en temps réel. Nous espérons ainsi fournir une application ultra-rapide pour les besoins de commande en ligne en Inde et établir une référence pour nos futurs développements."
— Sajal Gupta, responsable de l'ingénierie, Zomato