Imagine que você é um empreendedor iniciante que acaba de criar um site e um aplicativo móvel (por exemplo, para uma loja de donuts). Você deseja conectar as análises do usuário com um orçamento pequeno, mas não sabe como. Todo mundo usa Mixpanel, Facebook analytics, Yandex.Metrica e outros sistemas, mas não está claro o que escolher e como usá-lo.

O que são sistemas de análise?
Antes de tudo, devo dizer que o sistema de análise do usuário não é um sistema de análise dos logs do próprio serviço. O monitoramento de como o serviço funciona se concentra na estabilidade e no desempenho e é realizado separadamente pelos desenvolvedores. A análise do usuário foi criada para estudar com precisão o comportamento do usuário: quais ações ele executa, com que frequência, como ele reage a empurrões ou outros eventos no serviço. Globalmente, a análise do usuário tem duas áreas: análise móvel e da web. Apesar das diferentes interfaces e recursos dos serviços web e móveis, o trabalho com o sistema de análise nas duas direções é aproximadamente o mesmo.
Por que isso é necessário?
Análise de usuário necessária:
- monitorar o que acontece ao usar o serviço;
- alterar o conteúdo e entender onde desenvolver, quais recursos adicionar / remover;
- para descobrir o que os usuários não gostam e alterá-lo.
Como isso funciona?
Para estudar o comportamento do usuário, você precisa coletar um histórico desse comportamento. Mas o que exatamente coletar? Essa pergunta é de até 70% da complexidade de toda a tarefa. Muitos participantes da equipe de produto devem responder juntos: gerente de produto, programadores, analistas. Qualquer erro nesta etapa é caro: você não pode coletar o que precisa e coletar o que não permite tirar conclusões significativas.
Depois de decidir o que montar, você precisa considerar a arquitetura de como montá-lo. O principal objeto com o qual os sistemas analíticos trabalham é um evento. Evento é uma descrição do que aconteceu que é enviado ao sistema de análise em resposta à ação de um usuário. Como regra, para cada uma das ações selecionadas para rastreamento na etapa anterior, o evento parece um pacote JSON com campos que descrevem a ação perfeita.
Que tipo de pacote JSON?Um pacote JSON é um arquivo de texto que descreve o que aconteceu. Por exemplo, um pacote JSON pode conter informações de que a usuário Mary executou a ação do jogo Iniciado às 23:00 de 15 de novembro. Como descrever cada ação? Por exemplo, um usuário clica em um botão. Quais propriedades precisam ser coletadas neste momento? Eles são divididos em dois tipos:
- superpropriedades - propriedades que são características de todos os eventos que estão sempre presentes. Desta vez, identificação do dispositivo, versão da API, versão do analytics, versão do SO;
- propriedades específicas do evento - essas propriedades são arbitrárias e a principal dificuldade é como escolhê-las. Por exemplo, para o botão "comprar moedas" no jogo, essas propriedades seriam "quantas moedas o usuário comprou", "quanto custam as moedas".
Um exemplo de um pacote JSON em um serviço de aprendizado de idiomas:

Mas por que não coletar tudo em uma fileira?
Porque todos os eventos são criados manualmente. Nos sistemas de análise, não há um botão "salvar tudo" (e isso seria inútil). Somente as ações da lógica de serviço que são interessantes para alguma parte da equipe são coletadas. Mesmo para cada estado de um botão ou janela, nem todos os eventos são geralmente interessantes. Para processos longos (por exemplo, o nível do jogo), apenas o começo e o fim podem ser importantes. O que acontece no meio não pode ser coletado.
Como regra, a lógica dos serviços consiste em objetos - entidades. Pode ser uma entidade de moeda, uma entidade de nível. Portanto, é possível compilar eventos de entidades, seus estados e ações. Exemplos: “o nível começou”, “o nível terminou”, “o nível terminou, o motivo é comido pelo dragão”. É desejável que todas as entidades que podem ser "descobertas" sejam fechadas para não violar a lógica e não se complicar com o trabalho adicional com análises.

Quantos eventos existem em um sistema complexo?
Sistemas complexos podem lidar com várias centenas de eventos coletados de todos os clientes (gerente de produto, programadores, analistas) e com cuidado (!) Trazidos para o tablet e depois para a lógica do serviço. A preparação do evento é um grande trabalho interdisciplinar que exige que todos compreendam o que precisa ser coletado, atenção e precisão.
O que vem a seguir?
Digamos que criamos todos os eventos interessantes. É hora de colecioná-los. Para fazer isso, você precisa conectar a análise do cliente. Entramos no Google e procuramos análises móveis (ou escolhemos as conhecidas: Mixpanel , Yandex.Metrica , Google Analytics , análises do Facebook , Tune , Amplitude ). Pegamos o SDK do site e o incorporamos no código do nosso serviço (daí o nome "cliente" - porque o SDK está embutido no cliente).
E onde coletar eventos?
Todos os pacotes JSON que serão criados precisam ser armazenados em algum lugar. Para onde enviá-los e para onde eles vão? No caso de um sistema analítico de cliente, ela é responsável por isso. Não sabemos onde estão nossos pacotes JSON, onde está seu armazenamento, quantos existem e como eles estão armazenados lá. Todo o processo de coleta é realizado pelo sistema e não importa para nós. No serviço de análise, obtemos acesso à sua conta pessoal, onde já vemos os resultados do processamento dos dados comportamentais iniciais. Além disso, os analistas trabalham com o que veem na sua conta.
Nas versões gratuitas, os dados de origem geralmente não podem ser baixados. Na versão cara, existem essas oportunidades.
Quanto tempo a conexão levará?
As análises mais simples podem ser conectadas em uma hora: será o App Metrika, que mostrará as coisas mais simples sem analisar eventos personalizados. O tempo de configuração para um sistema mais complexo depende dos eventos selecionados. Existem dificuldades que requerem desenvolvimento adicional:
- Existe uma fila de eventos? Por exemplo, como corrigir um evento que não pode vir mais cedo que outro?
- O que fazer se o usuário mudou o horário? Alterou o fuso horário?
- E se não houver internet?
Em média, você pode configurar o Mixpanel em alguns dias. Quando está planejado coletar um grande número de eventos específicos, pode levar uma semana.

Como escolher qual eu preciso?
As estatísticas gerais em todos os sistemas analíticos funcionam bem. Adequado para profissionais de marketing e vendas: você pode ver a retenção, quantos usuários gastaram no aplicativo, todas as métricas básicas de alto nível. Para a página de destino mais simples, as métricas do Yandex serão suficientes.
Quando se trata de tarefas fora do padrão, a escolha depende do seu serviço, tarefas analíticas e eventos que precisam ser processados para resolvê-los.
- No Mixpanel, por exemplo, testes A / B podem ser realizados. Como fazer isso? Você cria um experimento no qual haverá várias amostras e faz uma seleção (você atribui esses usuários a A e outros a B). Para A, o botão será verde, para B, azul. Como o Mixpanel coleta todos os dados, ele pode encontrar o ID do dispositivo de cada usuário de A e B. No código de serviço, usando o SDK, são criados ajustes - esses são locais nos quais algo pode mudar para teste. Além disso, para cada usuário, o valor (no nosso caso, a cor do botão) é retirado do Mixpanel. Se não houver conexão com a Internet, a opção padrão será selecionada.
- Muitas vezes, você deseja não apenas armazenar e estudar eventos, mas também agregar usuários. O mesmo Mixpanel faz isso automaticamente na guia Usuários. Lá você pode ver todos os dados permanentes do usuário (nome, email, perfil do facebook) e o histórico dos logs do usuário. Você pode olhar para os dados do usuário como estatísticas: o dragão comeu 100 vezes, comprou 3 flores . Em alguns sistemas, a agregação de usuários pode ser baixada.
- Qual é a principal frieza das análises do Facebook ? Ele combina o visitante do serviço com seu perfil no Facebook. Portanto, você pode descobrir seu público e, o mais importante, convertê-lo em um público publicitário. Por exemplo, se eu visitei o site uma vez e seu proprietário incluísse anúncios (público preenchível automaticamente nas análises do Facebook) nos visitantes, no futuro verei anúncios nesse site no Facebook. Para o proprietário do site, ele funciona de maneira simples e conveniente, basta lembrar de colocar um limite diário no orçamento de publicidade. O ponto negativo da análise do Facebook é que não é particularmente conveniente: um site bastante complexo que não é imediatamente claro, não funciona muito rápido.
Quase nada a fazer e tudo funciona! Provavelmente existem contras?
Sim, e um deles é que geralmente é caro. Para uma startup, pode custar cerca de US $ 50 mil por mês. Mas também existem opções gratuitas. O Yandex App Metrica é gratuito e adequado para as métricas mais básicas.
No entanto, se a solução for barata, as análises não serão detalhadas: será possível ver o tipo de dispositivo, SO, mas não eventos específicos, e não será possível criar funis. O Mixpanel pode custar 50 mil dólares por ano (por exemplo, um aplicativo com Am Nyam, pode comer muito). Em geral, o acesso aos dados geralmente é bastante limitado. Você não pode imaginar e executar seus próprios modelos. O pagamento é geralmente realizado mensalmente / periodicamente.
Mais alguma coisa?
Mas o pior é que mesmo o Mixpanel considera a quantidade de dados que é característica de um aplicativo móvel ativo como uma aproximação (indicada abertamente diretamente na documentação). Se você comparar os resultados com a análise do servidor, os valores divergirão. (Para obter informações sobre como criar sua própria análise de servidor, leia nosso próximo artigo!)
O grande ponto negativo de quase todos os sistemas analíticos é que eles restringem o acesso a logs brutos. Portanto, ao lançar seu próprio modelo, ao que parece, seus próprios dados não funcionarão. Por exemplo, se você observar os funis no Mixpanel, poderá calcular apenas o tempo médio entre as etapas. Métricas mais complexas, como tempo médio ou percentis, não podem ser calculadas.
Além disso, muitas vezes a capacidade de agregações e segmentações complexas não é suficiente. Por exemplo, o grupo astuto de "unir usuários que nasceram em 1990 e compraram pelo menos 50 donuts cada" pode não estar disponível.
A análise do Facebook tem uma interface muito complexa e é lenta.
E se eu ligar todos os sistemas de uma só vez?
Ótima idéia! Muitas vezes acontece que sistemas diferentes produzem resultados diferentes. Números diferentes. Além disso, alguns têm um funcional, segundo outro, outros são gratuitos.
Além disso, vários sistemas podem ser incluídos em paralelo para teste: por exemplo, para se familiarizar com a nova interface e mudar gradualmente para ela. Como em qualquer empresa, aqui você precisa conhecer a medida e conectar as análises em um volume que você possa acompanhar (e que não reduzirá a velocidade da conexão de rede).
Todos nós nos conectamos e lançamos novos recursos, como adicionar eventos?
O mesmo que ao conectar a análise do zero: colete uma descrição dos eventos necessários e use o SDK para colá-lo no código do cliente.
Espero que você encontre as respostas para suas perguntas frequentes. Se eles ajudarem você a entender que a análise do cliente não é adequada para o seu aplicativo, recomendamos que você tente a análise do servidor. Vou falar sobre isso na próxima parte, e depois vou falar sobre como traduzir isso no meu projeto.