O passado e o presente de sua aplicação utilizando Time Series Databases

em Geral.

Para lançar um produto novo, seja um modelo  diferente de teclado ou uma máquina de lavar, as decisões se baseiam em pesquisa de mercado e no histórico de produtos similares: “As pessoas vão querer isso?”, “Quais os pontos fortes e os fracos dos produtos similares (ou de outras versões) que temos?”.

Após todo esse processo de planejamento, baseado em dados já coletados e compilados em informações, o lançamento do produto é realizado e, comumente, o seu desempenho em vendas é monitorado para gerar mais dados que, após serem processados, se transformam em informações sobre a aceitação do público.

Você pode até ter a impressão de que o primeiro parágrafo não está relacionado com aplicações web. Se é isso o que acha, provavelmente sua aplicação gera diversos dados que são jogados ao limbo e nunca mais serão recuperados.

Como você sabe o que está bom ou o que está ruim em sua aplicação? Como você planeja o lançamento de novas features e prioriza o trabalho?

Sem métricas (informações), você corre um grande risco de gastar dinheiro em algo que vai gerar pouco ou nenhum retorno. – “Ah, mas eu uso o Analytics e o New Relic para saber o que está acontecendo!”. Pra começar, o New Relic te dá informações do que está errado dentro de seu servidor (erros na aplicação, carga de memória e CPU, …).

O Analytics dá informações mais generalistas, como por exemplo, a quantidade de clicks em um link ou a quantidade de sessões. Este pode até ser um grande avanço para algumas aplicações de pequeno porte, mas quando seu produto começa a escalar (ganhar muitos usuários) o Analytics pode deixar de fora alguns dados por já ter atingido o limite de requisições (na versão gratuita).

Os Time Series Databases (TSDB – Bancos de Dados Temporais) estão aí como uma alternativa para guardar dados temporais. Estes podem ser descritos como um ponto em uma linha no tempo onde esse ponto possui o registro do “quando” e do “o que”.

O “quando” nada mais é do que um timestamp do acontecimento e o “o que” é a ação realizada ou o dado que precisa ser armazenado (você define). Perceba que eu estou falando sobre “dados” e não “informações”. São coisas distintas.

Os dados são registros que não geram conclusões se olhados separadamente, eles precisam ser compilados para gerar uma informação. Pode parecer um pouco complicado ter que processar dados para gerar informações se comparado ao Analytics que já dá algumas informações prontas.

A grande vantagem de gerar e armazenar seus próprios dados em um TSDB é a flexibilidade de armazenar qualquer coisa e poder consultar informações registradas há 10 anos com muita rapidez.

Veja um exemplo do meu dia a dia de trabalho: meu time está sempre interessado em saber como as coisas estão indo após o lançamento de uma feature, então nós registramos a quantidade de usuários ativos naquela nova funcionalidade, qual o tempo de renderização da página e também a transição entre a versão antiga do sistema e a versão nova depois do lançamento da feature.

Por que decidimos por armazenar em um TSDB e não no MySQL? O MySQL, assim como os SGBDs tradicionais, não suportam a busca por histórico (ou busca temporal). Você precisa fazer uma Query, que vai ler todo o seu registro de dados (imagina a demora para consultar 10 anos de registros!). Os TSDBs foram criados pensando justamente nisso! Veja:

// Eles possuem grande capacidade de escalabilidade. Podem receber milhões de dados em um fluxo contínuo e ainda gerar informações em tempo real;

// Baixo custo por terem um downtime reduzido e utilizarem menos recursos de hardware;

// Acrescentam mais uma dimensão aos SGBDs tradicionais: O tempo! Você pode de maneira fácil e rápida consultar informações de 5 anos ou de 2 minutos atrás.

E aí? Vale uma tentativa? Eu tenho usado bastante o InfluxDB (www.influxdata.com) para armazenar meus dados em conjunto do Grafana (grafana.org) para gerar informações e facilitar as consultas. Outro TSDB bastante utilizado no mercado é o Graphite (graphiteapp.org). O quanto antes você começar a gerar métricas, mais rapidamente você vai entender o gosto dos seus usuários e o que precisa ser melhorado ou deixado de lado.

Em um pŕoximo post vou explicar como utilizar o influxDB e integrá-lo ao grafana para acompanhar em tempo real suas métricas mais importantes!
Ficou alguma dúvida? Comenta aí!

Você também pode gostar