Observabilidade de aplicações com OpenTelemetry

Observabilidade e Telemetria

Observabilidade, especialmente em arquiteturas baseadas em microsserviços, é sem dúvidas um requisito indispensável. Observabilidade consiste em entender o estado interno de um sistema através da instrumentação dos dados de telemetria que este gera. Com isso, a realização de diagnósticos e a resolução de problemas é feita de forma mais rápida e assertiva, pois através destes dados conseguimos ter um entendimento mais profundo sobre o comportamento das aplicações, utilização de recursos e, eventualmente, gargalos que podem estar impactando fluxos de trabalhos importantes.

Os dados de telemetria são constituídos de 3 pilares: Logs, métricas e tracing.

Logs: Eventos em forma de texto emitidos pela aplicação em um determinado momento de maneira informativa ou para indicar erros a fim de facilitar um troubleshooting posterior.

Métricas: Números quantitativos utilizados para monitorar a “saúde” e a utilização de recursos da aplicação, por exemplo, uso de memória, cpu, tempo médio de resposta de um determinado recurso, transações realizadas no banco de dados, etc.

Tracing: Eventos emitidos por aplicações inseridas dentro de uma transação distribuída. Extremamente útil para identificar gargalos e comportamentos inesperados em aplicações que compõem uma transação completa dentro da execução de um processo em um sistema distribuído.

Os benefícios da observabilidade vão além da identificação de erros e comportamento das aplicações. Uma vez que temos, principalmente métricas, conseguimos extrair informações extremamente valiosas para o negócio. Por exemplo, um estudo realizado na Amazon em 2006 constatou que a cada 100 ms de latência na renderização de uma página reduzia em 1% o total de vendas.

Para extrair o maior valor possível dos dados de telemetria gerados pelas nossas aplicações, é recomendável a centralização dessas informações em uma única plataforma (vendor). Com isso, conseguimos ter acesso de forma centralizada aos dados para criação de artefatos úteis, como consultas complexas, visualizações e dashboards que indiquem métricas como uso de cpu, memória, tempo médio de resposta por requisição, etc.

Entretanto, essa centralização dos dados cria um forte acoplamento com o vendor escolhido, conhecido também como Vendor lock-in, podendo gerar uma dor de cabeça na possível adoção de uma nova ferramenta, já que nos dias atuais existem centenas de opções disponíveis no mercado. Eventualmente uma nova solução pode trazer mais valor ou reduzir custos, exigindo a alteração em todas as aplicações que geram os dados de telemetria. OpenTelemetry pode facilitar nossa vida nessa questão.

OpenTelemetry

OpenTelemetry surgiu em 2019 através da junção do OpenSensus e OpenTracing, com objetivo de padronizar a extração, transformação e exportação de dados de telemetria através de um conjunto de SDKs e APIs que fossem totalmente Vendor Agnostic.

OpenTelemetry resolve o problema de Vendor Lock-in através da exportação dos dados de telemetria gerados pelas aplicações para um coletor central. Uma vez estes dados importados, é possível realizar a  exportação para diversas plataformas de forma simultânea, não necessitando nenhuma modificação por parte das aplicações na integração dos dados de telemetria com os novos vendors.

Este coletor faz a ingestão dos dados através de Receivers, que recebem os dados tanto através do protocolo HTTP quanto gRPC, trabalhando no estilo pull or push based. Os dados podem ser recebidos, também, através de outros sistemas, como Jaeger, Prometheus, Zipkins, entre outros.

Uma vez os dados ingeridos pelo coletor, é possível aplicar transformações através de Processors, como por exemplo, agregar vários eventos em lote para o envio com o objetivo de diminuir a sobrecarga na etapa de exportação dos dados.

Por fim, os dados são exportados através da configuração de Exporters. Aqui, podemos exportar os dados de telemetria de forma simultânea para diversos vendors, com a possibilidade também de exportar cada dado de telemetria para um plataforma específica, sendo útil para casos onde o vendor não suporta a importação de algum dos tipos dos dados de telemetria.

Outra funcionalidade interessante do OpenTelemetry é a instrumentação automática. Através da instalação de bibliotecas, é possível automatizar diversas instrumentações, como consultas SQL executadas no banco, criação de spams para a rastreabilidade de transações distribuídas e requisições HTTP que as aplicações instrumentadas estão realizando. A instrumentação automatizada é disponibilizada para várias linguagens de programação, incluindo .NET, Python, Java e Javascript.

Conclusão

Sem dúvidas, quando o assunto é observabilidade, OpenTelemetry é uma ferramenta que não pode passar despercebida. Sua natureza Vendor Agnostic permite a desacoplação total da ingestão, processamento e exportação dos dados de telemetria gerados a partir das aplicações, criando uma flexibilidade que auxilia bastante na escolha da plataforma utilizada para o gerenciamento e consumo destes dados.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

AUTOR

Bruno Joaquim
Desenvolvedor .NET/NodeJs e especialista em Kafka com experiência em startups e grandes empresas

INSIGHTS EXIMIACO

Arquitetura de Software

Evolução e modernização de aplicações para suportar mudanças de escala.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquitetura de Software

Consciência Situacional: O Sucesso do Software em Constante Evolução

Arquiteto de Software com experiência executiva em Tecnologia
Arquitetura de Software

Automação de Processos de Negócio: A Chave para Operações Eficientes e Lucrativas

Arquiteto de software e solução com larga experiência corporativa
Arquitetura de Software

A Evolução da Arquitetura de Software para Produtos Digitais Escaláveis

Arquiteto de Software com experiência executiva em Tecnologia
0
Queremos saber a sua opinião, deixe seu comentáriox
Oferta de pré-venda!

Mentoria em
Arquitetura de Software

Práticas, padrões & técnicas para Arquitetura de Software, de maneira efetiva, com base em cenários reais para profissionais envolvidos no projeto e implantação de software.

Muito obrigado!

Deu tudo certo com seu envio!
Logo entraremos em contato

Observabilidade de aplicações com OpenTelemetry

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Observabilidade de aplicações com OpenTelemetry

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?