DEV Community

Cover image for Instrumentação com OpenTelemetry: Zero-Code, Code-Based ou Bibliotecas Instrumentadas?
Luis Fabrício De Llamas
Luis Fabrício De Llamas

Posted on

Instrumentação com OpenTelemetry: Zero-Code, Code-Based ou Bibliotecas Instrumentadas?

A instrumentação é o coração da observabilidade em sistemas complexos e distribuídos, e ferramentas como o OpenTelemetry estão transformando a forma como desenvolvedores e arquitetos coletam dados de suas aplicações. Neste artigo, vamos explorar as três abordagens principais de instrumentação oferecidas pelo OpenTelemetry: instrumentação zero-code, instrumentação code-based e bibliotecas instrumentadas. Cada uma delas possui suas vantagens e desvantagens, e entender qual delas utilizar pode ser determinante para o sucesso do monitoramento do seu sistema.

Instrumentação Zero-Code: Simplicidade ou Limitação?

A instrumentação zero-code é uma proposta intrigante. O conceito é simples: sem precisar modificar o código da aplicação, você consegue coletar métricas e traços diretamente. Isso se torna possível através de agentes ou ferramentas que fazem o trabalho pesado nos bastidores, interceptando chamadas e gerando os dados de observabilidade.

Imagine que você tem um sistema legado, ou até mesmo uma aplicação moderna, e precisa urgentemente começar a monitorar seu desempenho. A zero-code permite que você faça isso rapidamente. No entanto, há um lado negativo: essa abordagem pode ser limitada em termos de customização e profundidade das informações capturadas. Por exemplo, em uma aplicação complexa, como as utilizadas na série Naruto (se você fosse monitorar todos os movimentos e interações entre os personagens), a instrumentação zero-code seria suficiente para capturar os detalhes de cada combate? Provavelmente não. Ela oferece uma visão mais superficial e genérica, ideal para situações onde a velocidade é crucial, mas pode deixar a desejar quando se precisa de um nível maior de controle.

Instrumentação Code-Based: Controle Total

Se a zero-code se trata de velocidade e simplicidade, a instrumentação baseada em código é o oposto: aqui, o desenvolvedor tem controle total. Ao inserir manualmente as chamadas de instrumentação no código, é possível personalizar completamente o que é rastreado e como esses dados são reportados. Isso significa que se você precisa de visibilidade total sobre uma função específica ou fluxo de trabalho, esta é a abordagem ideal.

No entanto, essa flexibilidade vem com um preço. Requer tempo e esforço da equipe de desenvolvimento. É uma escolha particularmente vantajosa quando a aplicação exige monitoramento detalhado em áreas específicas que a instrumentação automática não cobre de forma eficiente. Se voltarmos ao exemplo de Naruto, isso seria como monitorar não só os movimentos de cada personagem, mas também suas intenções, motivações e até o fluxo de chakra. Com a instrumentação baseada em código, você pode capturar tudo isso com precisão, mas precisará trabalhar mais para configurá-la.

Bibliotecas Instrumentadas: O Melhor dos Dois Mundos?

Para aqueles que querem o meio-termo entre a simplicidade da instrumentação zero-code e o controle da code-based, as bibliotecas instrumentadas são uma excelente opção. Elas vêm pré-configuradas com pontos de instrumentação e oferecem integração nativa com o OpenTelemetry. Você pode usá-las para monitorar componentes específicos do sistema sem precisar reinventar a roda.

Bibliotecas populares como frameworks web e sistemas de banco de dados já possuem suporte nativo para OpenTelemetry, o que facilita a adoção e acelera o processo de coleta de dados. Novamente, utilizando o universo de Naruto como exemplo, seria como pegar uma biblioteca pronta para monitorar os combates de cada ninja sem precisar escrever o código para isso do zero. Prático, não?

Conclusão

No final das contas, a escolha entre zero-code, code-based ou bibliotecas instrumentadas vai depender das necessidades do seu projeto e da sua equipe. Se você precisa de uma solução rápida e eficiente, zero-code pode ser a melhor escolha. Mas se o seu foco é controle e precisão, code-based provavelmente será o caminho. Já as bibliotecas instrumentadas oferecem um excelente compromisso entre ambos.

Luis De Llamas

Top comments (0)