Para uma empresa como a Uber, os dados em tempo real são o sangue vital de ambos os serviços voltados para o cliente e os internos. Os clientes dependem de dados em tempo real para obter passeios e pegar comida conforme sua conveniência. Equipes internas também dependem de dados atualizados para impulsionar a infraestrutura por trás de seus aplicativos voltados para o cliente, como para a ferramenta interna que monitora a análise de falhas do aplicativo móvel.
A Uber migrou para o Apache Pinot para impulsionar essa ferramenta interna e experimentou melhorias significativas em comparação com seu motor de análise anterior (Elasticsearch). Ao mudar para o Pinot, uma plataforma de análise em tempo real verdadeira, a Uber viu benefícios, incluindo:
- Redução de 70% nos custos de infraestrutura (economias de mais de $2M por ano)
- Redução de 80% nos núcleos de CPU
- Redução de 66% no espaço de dados
- Redução de 64% no tempo de carregamento de páginas (de 14 segundos para menos de 5 segundos)
- Redução do atraso de ingestão para <10 milissegundos
- Diminuição dos tempos limite de consulta e eliminação do problema de perda de dados
Assista Agora
O conteúdo deste blog é baseado em uma reunião presencial que contou com histórias de usuários do Apache Pinot. Também referenciamos um blog da equipe de engenharia da Uber que aborda como eles usam o Pinot para fornecer análises em tempo real para falhas no aplicativo móvel. Assista à reunião aqui:
Ou continue lendo para aprender como a Uber alcançou esses resultados com o Apache Pinot.
Como a Uber Fornece Análises em Tempo Real sobre Falhas no Aplicativo Móvel
A Uber possui um pipeline de ingestão automatizado que rastreia falhas de aplicativos e coleta dados para investigação. Alguns desses dados são ingeridos no Apache Flink para transformações, que são então devolvidos a tópicos Kafka para consumo downstream. Esses eventos brutos e processados no Kafka são consumidos pelo Apache Pinot, que executa consultas analíticas cujos resultados são entregues a usuários internos por meio do Grafana e ferramentas de visualização internas. Seu pipeline ingere dados em tempo real e offline (não representados) para criar uma visão completa dos usuários, conhecidos como tabelas híbridas no Apache Pinot.
Análise em Tempo Real de Falhas de Aplicativos com Apache Pinot
A Uber libera cerca de 11.000 mudanças novas de código e infraestrutura todas as semanas, e conta com uma ferramenta própria (Healthline) para ajudar a detectar e resolver problemas de falhas. O Healthline permite que a Uber melhore a medição e alcance do seu Tempo Médio de Detecção (MTTD). Por exemplo, eles podem lançar um novo recurso que causa falhas inesperadas no aplicativo e precisam ser capazes de rapidamente identificar a origem das falhas ao analisar os dados de falha.
O dashboard abaixo mostra uma semana de dados de falha para um aplicativo móvel e uma versão do sistema operacional. Neste exemplo, eventos de sessão ocorrem até centenas de milhares de vezes por segundo, e falhas medem entre 15.000 a 20.000 eventos por segundo. A Uber combina essas métricas para calcular a taxa de fatalidade livre, que indica a saúde do aplicativo (o objetivo é estar o mais próximo possível de 100%).
Com o Elasticsearch, um mecanismo de busca genérico, picos na taxa de falhas causavam atraso na ingestão e atrasavam a resposta da equipe na identificação de problemas. Ao migrar para o Apache Pinot, projetado especificamente para análises em tempo real em escala massiva, a equipe observou uma diminuição tanto no número quanto na gravidade dos atrasos na ingestão.
Análise Detalhada dos Dados de Falha
Além da visão geral de alto nível dos dados de falha, a Uber também fornece análises detalhadas ao nível das falhas. Eles agregam métricas de falha em várias dimensões, como o número de falhas por sistema operacional e por versão, e a distribuição de falhas por versão. Este caso de uso aproveita vários índices do Pinot (de intervalo, invertido e de texto) para compartilhar quando ocorreu um tipo de falha, quais versões são afetadas, o número de ocorrências e o número de usuários e dispositivos afetados.
Para a análise detalhada, foi crucial que a Uber tivesse capacidades de pesquisa de texto para ler mensagens de erro de falha. O índice de texto do Pinot é construído sobre o Lucene e lhes dá a capacidade de pesquisar falhas por mensagem de falha, nome de classe, pilha de rastreamento e mais.
Medindo Sessões em Escala
A Uber também utiliza o Pinot para medir sessões únicas por dispositivo, versão, sistema operacional e hora em escala. O Pinot oferece processamentos em tempo real com alta capacidade de throughput, capaz de ingerir os 300.000 eventos analíticos por segundo da Uber. A equipe tem uma configuração híbrida que inclui uma tabela em tempo real com granularidade de 10 minutos e retenção de dados de 3 dias, bem como uma tabela offline com granularidade horária e diária e retenção de dados de 45 dias.
Aproveitando o HyperLogLog do Apache Pinot, a equipe conseguiu reduzir o número de eventos armazenados e realizar menos agregações únicas em todos os eventos. O Pinot também ofereceu latências muito baixas — abaixo de 100 milissegundos para a latência p99.5.
Economias de Custos de Infraestrutura
Segundo os cálculos da Uber, eles economizaram mais de US$ 2 milhões em custos de infraestrutura anualmente ao migrar para o Pinot. Seu ambiente Pinot resultou em uma redução de 70% nos custos de infraestrutura em comparação com o Elasticsearch. Também houve uma redução de 80% nos núcleos de CPU e uma diminuição de 66% no espaço ocupado pelos dados.
Com o Elasticsearch, a Uber estava usando 22.000 núcleos de CPU. Com o Pinot, reduziram esse número em 80%. Aqui está um instantâneo de sua configuração Pinot:
Melhoria no Desempenho das Consultas e Experiência do Usuário
Com o Apache Pinot, a Uber consegue oferecer uma melhor experiência do usuário com carregamento de páginas mais rápido e maior confiabilidade. A migração para o Pinot reduziu os tempos de carregamento de páginas em 64%, de 14 segundos para menos de 5 segundos. O Pinot também tem uma melhor tolerância a picos de carga, resultando em recuperação mais rápida de atrasos. Mesmo se a equipe observar um atraso na ingestão, o Pinot consegue se recuperar rapidamente em questão de minutos.
Comparado ao Elasticsearch, o Pinot também mostrou melhorias significativas em relação aos tempos limite das consultas e perda de dados. Se ocorresse um desastre em um aplicativo móvel enquanto usava o Elasticsearch, as consultas relacionadas a esse índice iriam atingir o tempo limite. A Uber resolveu esse problema com o Pinot controlando o tamanho do segmento. A equipe também não enfrenta problemas de perda de dados com o Pinot, em comparação com frequentes problemas de dados quando o Elasticsearch lidava com aumento na taxa de ingestão.
A Próxima Iteração da Configuração Pinot da Uber
A seguir, o Uber pretende migrar para a indexação de texto nativo para seus dados de falhas móveis. Os dados de falhas móveis do Uber contêm muitos dados estruturados, o que torna viável para a equipe migrar todos os seus casos de uso para índices de texto nativos. Essa transição proporcionará economias de custos com armazenamento de dados e reduzirá o tempo gasto na consulta de dados.
O Uber Não É a Única Organização Observando Sucesso ao Migrar de Elasticsearch para Pinot
A Uniqode (anteriormente Beaconstac) viu uma melhoria de 10 vezes no desempenho geral das consultas ao trocar de Elasticsearch para Pinot. A Cisco Webex também migrou suas análises em tempo real e observabilidade para o Pinot após enfrentar altas latências. A equipe da Webex descobriu que o Apache Pinot oferece latências 5x a 150x menores do que o Elasticsearch.
Source:
https://dzone.com/articles/real-time-app-crash-analytics-with-apache-pinot