Zomato è un aggregatore di ristoranti multinazionale indiano e un'azienda di consegna di cibo a domicilio che serve clienti in 500 città solo in India. Con oltre 43 milioni di clienti attivi e oltre 1,5 milioni di ordini medi al giorno, è uno dei servizi di ordinazione e consegna di cibo più popolari nel paese. Ciò significa anche che i clienti utilizzano una gamma diversificata di dispositivi e hanno una disponibilità di rete diversa. Oltre a consegne veloci, ciò rende imperativo anche un'esperienza fluida e senza interruzioni nell'app.
Gli utenti si aspettano tempi di apertura delle app e reattività rapidi. Il miglioramento di questa metrica non solo ha un impatto diretto su App Vitals, ma garantisce un maggior numero di completamenti degli ordini e supporta la strategia di Zomato, ovvero l'espansione in nuovi mercati e l'offerta di un'esperienza migliore sui dispositivi di fascia bassa e media.In ultima analisi, ciò li aiuta ad acquisire il loro prossimo miliardo di utenti. Gli orari di apertura delle app fungono anche da fattori predittivi per l'aumento delle dimensioni della canalizzazione man mano che gli utenti si spostano più avanti nella canalizzazione di vendita.
Inoltre, Zomato ha ottenuto vantaggi impressionanti grazie alla concentrazione su App Vitals. Ad esempio, accelerare del 30% il tempo di caricamento dell'app ha portato a un miglioramento della fidelizzazione dei clienti del primo giorno di circa il 90% !
La sfida
Il rapido ritmo di sviluppo e l'attenzione all'aggiunta di funzionalità di Zomato, sebbene siano ideali per i clienti, hanno portato alla necessità di ottimizzare il codebase e l'esperienza utente. Mentre era alla ricerca di nuove funzionalità, Zomato voleva anche mantenere il suo rendimento all'altezza. Dato che più SDK consumavano risorse che non erano sempre necessarie, era necessario semplificare e razionalizzare il codebase.
Tutto ciò è sostenuto dall'espansione di Zomato nelle città di Livello 2 e 3 in India, dove le persone utilizzano in gran parte dispositivi di fascia bassa e intermedia con una capacità di elaborazione relativamente limitata. Con l'inclusione di questi dispositivi, il team doveva garantire la stessa esperienza utente di altissimo livello come quella dei dispositivi di livello superiore.
Che cosa hanno fatto?
Zomato ha utilizzato una semplice griglia per analizzare i costi generali e trovare la soluzione che genera il miglior ritorno sull'investimento rispetto all'impegno del team di sviluppo. Utilizzando questa griglia, il team ha iniziato con un percorso di ottimizzazione e miglioramento della durata di 4 mesi.
Il primo passo è stato analizzare le tracce del sistema per individuare i problemi, effettuare analisi basate sul tempo e stabilire le priorità di conseguenza. Perfetto è lo strumento perfetto per analizzare, profilare e tracciare i processi di Android. Zomato ha utilizzato lo strumento per tracciare tutti gli SDK inizializzati durante l'avvio dell'app e indicare quelli che possono essere rimossi o caricati pigramente.
La rimozione degli SDK legacy e delle librerie di terze parti inutilizzate era la massima priorità, in quanto si trattava di un'attività a basso sforzo e ad alto guadagno. Questo approccio ha aiutato Zomato a risparmiare un prezioso 20% nel tempo di avvio dell'app.
Molte raccolte di terze parti utilizzano fornitori di contenuti per l'inizializzazione all'avvio dell'app, il che influisce sui relativi tempi di avvio. Zomato utilizza l'SDK di Facebook per l'accesso, ma l'utente ha anche altre opzioni di accesso, quindi l'inizializzazione dell'SDK all'avvio non è efficace. Con l'introduzione della libreria App Startup, Zomato carica l'SDK solo se l'utente sceglie l'opzione di accesso a Facebook. In questo modo, l'azienda ha potuto ridurre i tempi di avvio di circa il 6%.
Il passo successivo è stato migliorare il tempo di inflazione delle visualizzazioni poiché il rendering e l'inflazione della visualizzazione stessa possono richiedere molto tempo in una struttura dell'interfaccia utente complessa come quella di Zomato. Viewstub consente di aumentare l'efficienza in quanto consente di creare viste, ma non di aggiungerle alla gerarchia delle visualizzazioni, a meno che non sia necessario. Le vasche di visualizzazione sono più efficienti dell'utilizzo delle visualizzazioni. GONE. Anche se la visualizzazione è in stato GONE, verrà gonfiata e diminuirà l'utilizzo di memoria e CPU. Zomato ha appiattito la propria gerarchia delle visualizzazioni e unito i layout insieme alle vasche di visualizzazioni nelle attività di accesso. Queste modifiche hanno migliorato significativamente i tempi di inflazione del 7%.
Profiler di Android ha contribuito a ottimizzare l'utilizzo della memoria, in quanto consente di monitorare l'attività della CPU, la memoria e la rete in tempo reale. Il profiler ha permesso di identificare il problema principale delle situazioni di blocco e dei overhead della memoria, nonché di risolverlo di conseguenza. Zomato ha anche lavorato al suo meccanismo di memorizzazione nella cache per ridurre drasticamente i problemi di memoria esauriti del 60%.
Azione | Prima (sec) | Dopo (sec) | Miglioramento |
---|---|---|---|
SDK precedenti rimossi, librerie di terze parti inutilizzate | 4,873 | 3,813 | 21,74% |
Caricamento lento delle librerie | 3,814 | 3,577 | 6,2% |
Miglioramenti del layout, aree con vista | 2,529 | 2,348 | 7,15% |
Tempo di avvio dell'app = Inizializzazione dell'app + Tempo di caricamento delle librerie + Visualizza tempo di inflazione
Risultati
I miglioramenti in termini di prestazioni di Zomato hanno contribuito a creare un'esperienza molto più fluida. Ulteriori miglioramenti dell'interfaccia utente e memorizzazione nella cache hanno ridotto anche il janking.
![](https://developer.android.com/static/images/distribute/stories/zomato.png?authuser=9&hl=it)
L'app alla home page (facendo clic sull'icona dell'app per accedere a una home page completamente caricata e utilizzabile) è una metrica aziendale chiave che Zomato ha monitorato internamente. Dopo l'implementazione dei miglioramenti, l'azienda ha registrato un aumento significativo di questa metrica. I clienti che arrivano su una pagina completamente caricata sono aumentati di circa il 20% durante questo periodo.
Questo ha portato a un miglioramento della fidelizzazione dei clienti del primo giorno di circa il 90%. Questi miglioramenti hanno avuto un effetto di riduzione anche sulle canalizzazioni in avanti: la percentuale di ordine generale (home -> menu -> carrello -> ordine) è migliorata di circa 1,5 punti percentuali, ovvero circa 600.000 ordini su base mensile.
Secondo la metrica relativa all'avvio a freddo delle prestazioni di Firebase, c'è stato un miglioramento medio del 25%, mentre per i dispositivi di fascia bassa/media, il tempo di avvio a freddo delle app ha raggiunto fino al 30%.
Il rendimento del tempo di avvio dell'app è una metrica importante che influisce sulla percezione degli utenti e gli sforzi di investimento per ottimizzare le prestazioni possono portare a un impatto significativo anche sull'attività.
"In Zomato, offrire e sviluppare una customer experience straordinaria è sempre stato al centro della nostra ideologia. Riteniamo che le prestazioni siano una delle leve principali e, di conseguenza, il nostro team si è impegnato per realizzare l'eccellenza nella progettazione per migliorare i tempi di caricamento delle app utilizzando gli strumenti per sviluppatori di Google e ha ottenuto risultati sostanziali in tempo reale. Con questo, speriamo di fornire un'app incredibilmente veloce per le esigenze di ordinazione online dell'India e di stabilire un punto di riferimento per il nostro futuro sviluppo."
- Sajal Gupta, Engineering Manager, Zomato