A Zomato é uma empresa multinacional indiana de entrega de comida e que atende clientes em 500 cidades só na Índia. Com mais de 43 milhões de clientes ativos e uma média de mais de 1,5 milhão de pedidos por dia, a empresa é um dos serviços de entrega e pedido de comida mais procurados do país. Isso também significa que os clientes usam uma variedade de dispositivos e têm uma disponibilidade de rede diferente. Além de entregas rápidas, isso também torna a experiência no app imperativa.
Os usuários esperam tempos de abertura e capacidade de resposta rápidos. Melhorar essa métrica não apenas afeta diretamente as App Vitals, mas também garante mais conclusões de pedidos e apoia a estratégia da Zomato, que alcança novos mercados e permite uma experiência melhor em dispositivos de médio ou baixo nível.Isso ajuda a conquistar o próximo bilhão de usuários. Os horários de abertura do app também indicam um aumento no tamanho do funil, já que os usuários avançam no funil de vendas.
A Zomato teve ganhos impressionantes ao focar nas métricas do app. Por exemplo, acelerar o tempo de carregamento do app em 30% aumentou a retenção de clientes no primeiro dia em cerca de 90%.
O desafio
O ritmo acelerado de desenvolvimento e o foco da Zomato nas adições de recursos, embora ótimo para os clientes, resultaram na necessidade de otimizar a base de código e a UX. Enquanto buscava adicionar novos recursos, a Zomato também queria manter o desempenho no mesmo nível. Com vários SDKs consumindo recursos que nem sempre eram necessários, havia a necessidade de simplificar e racionalizar a base de código.
Tudo isso foi embasado pela expansão da Zomato para cidades de Nível 2 e 3 na Índia, onde as pessoas usam em grande parte dispositivos de níveis baixos e médios com capacidade de processamento relativamente limitada. Com a inclusão desses dispositivos, a equipe precisou garantir a mesma experiência do usuário de alto nível que os aparelhos de nível mais alto.
O que eles fizeram?
A Zomato usou uma rubrica simples para analisar as despesas gerais, ou seja, qual solução pode oferecer o melhor retorno do investimento em comparação com o esforço da equipe de desenvolvimento. Usando essa rubrica, a equipe começou com uma jornada de otimização e melhoria de quatro meses.
A primeira etapa foi examinar os rastreamentos do sistema para encontrar problemas, fazer análises com base no tempo e priorizar esses dados. O Perfetto é a ferramenta perfeita para analisar, criar perfis e rastrear processos do Android. A Zomato usou a ferramenta para rastrear todos os SDKs inicializados durante a inicialização do app e apontar aqueles que podem ser removidos ou carregados lentamente.
Remover os SDKs legados e as bibliotecas de terceiros não utilizadas era a prioridade, porque era uma tarefa de baixo esforço e alto ganho. Essa abordagem ajudou a Zomato a economizar 20% do tempo de inicialização do app.
Muitas bibliotecas de terceiros usam provedores de conteúdo para inicializar o app, o que afeta esse tempo. A Zomato usa o SDK do Facebook para fazer login, mas o usuário também tem outras opções de login. Portanto, a inicialização do SDK na inicialização é ineficiente. Com a introdução da biblioteca App Startup, o Zomato só carrega o SDK se o usuário usar a opção de login do Facebook. Isso ajudou a reduzir o tempo de inicialização em cerca de 6%.
O próximo passo foi melhorar o tempo de inflação das visualizações, já que a renderização e a inflação da própria visualização podem demorar bastante em uma estrutura de interface complexa como a do Zomato. Viewstub: ajuda a aumentar a eficiência porque permite que visualizações sejam criadas, mas não adicionadas à hierarquia, a menos que isso seja necessário. Viewstubs são mais eficientes do que usar View. SUMIDA, como mesmo que a visualização esteja no estado GONE, ela será inflada e vai consumir memória e uso de CPU. A Zomato nivelou a hierarquia de visualização e uniu os layouts com os stubs de visualização na atividade de login. Essas mudanças melhoraram significativamente o tempo de inflação em 7%.
O Android Profiler ajudou a otimizar o uso de memória, permitindo rastrear a atividade da CPU, a memória e a rede em tempo real. O criador de perfil permitiu que identificasse o problema raiz nas situações de bloqueio e nas sobrecargas de memória, e fizesse a correção adequada. A Zomato também trabalhou em seu mecanismo de armazenamento em cache para gerar uma queda enorme de 60% nos problemas de falta de memória.
Ação | Antes (s) | Depois (s) | Melhoria |
---|---|---|---|
Remoção de SDKs legados e bibliotecas de terceiros não usadas | 4,873 | 3,813 | 21,74% |
Bibliotecas de carregamento lento | 3,814 | 3,577 | 6,2% |
Melhorias de layout, viewstubs | 2,529 | 2,348 | 7,15% |
Tempo de inicialização do app = Inicialização do app + Tempo de carregamento das bibliotecas + Ver tempo de inflação
Resultados
Os ganhos de desempenho da Zomato ajudaram a criar uma experiência muito mais tranquila. Outras melhorias na interface e o armazenamento em cache também reduziram a instabilidade.
![](https://developer.android.com/static/images/distribute/stories/zomato.png?authuser=5&hl=pt)
Do aplicativo à página inicial (clicar no ícone do aplicativo para uma página inicial totalmente carregada e utilizável) é uma métrica de negócios importante que a Zomato acompanhou internamente. Depois que as melhorias foram implementadas, houve um aumento significativo nessa métrica. Os clientes que acessaram uma página totalmente carregada aumentaram cerca de 20% durante esse período.
Isso levou a uma melhoria na retenção de clientes no primeiro dia em cerca de 90%. Essas melhorias também tiveram um efeito direto nos funis de encaminhamento: a taxa geral de pedidos (página inicial -> menu -> carrinho -> pedido) melhorou em cerca de 1,5 ponto percentual, ou seja, cerca de 600 mil pedidos entre meses.
De acordo com a métrica de inicialização a frio do Firebase, houve uma melhoria média de 25% e, para dispositivos de extremidade baixa/média, a melhoria no tempo de inicialização do app a frio atingiu até 30%.
A performance do tempo de inicialização do app é uma métrica importante que afeta a percepção dos usuários, e investir em esforços para otimizar a performance também pode levar a um impacto significativo nos negócios.
"Na Zomato, oferecer e criar uma experiência do cliente incrível sempre foi o foco da nossa ideologia. Acreditamos que o desempenho é um dos principais impulsionadores. Por isso, nossa equipe se esforçou para a excelência em engenharia para melhorar os tempos de carregamento dos apps usando as ferramentas para desenvolvedores do Google e teve resultados substanciais em tempo real. Com isso, esperamos fornecer um app ultrarrápido para as necessidades de pedidos on-line da Índia e definir um patamar para nosso desenvolvimento futuro."
— Sajal Gupta, gerente de engenharia, Zomato