BLOG | NGINX

Como o OpenTelemetry está mudando a maneira como rastreamos e projetamos aplicações

NGINX-Parte-de-F5-horiz-preto-tipo-RGB
Miniatura de Dave McAllister
Dave McAllister
Publicado em 21 de julho de 2022

A observabilidade é essencial ao executar aplicativos nativos da nuvem, onde a funcionalidade do aplicativo surge da interação entre um grande número de microsserviços executados em vários locais. A natureza fracamente acoplada dos aplicativos de microsserviços significa que cada microsserviço relata suas atividades à sua própria maneira. Sem uma ferramenta que compila e correlaciona esses dados de telemetria, é extremamente difícil – se não impossível – rastrear o processamento de uma solicitação do início ao fim, o que é crucial para a solução de problemas.

Ao procurar uma ferramenta de observabilidade multifuncional, a equipe por trás do projeto NGINX Modern Apps Reference Architecture (MARA) escolheu o OpenTelemetry . Com nossa equipe de OSS escolhendo esse projeto emergente, queremos nos aprofundar mais. Na GlueCon 2022 , reuni-me com Granville Schmidt, arquiteto do escritório do CTO da F5, para discutir por que estamos entusiasmados com o estado atual e as ofertas futuras do OpenTelemetry. Você pode assistir à nossa conversa abaixo e, neste blog, aprender mais sobre por que o OpenTelemetry é um grande trunfo para o cenário de aplicativos nativos da nuvem.

OpenTelemetry impulsiona a observabilidade 2.0

Anunciado pela primeira vez na KubeCon 2019 em Barcelona, o OpenTelemetry atraiu um grupo entusiasmado de colaboradores. É o segundo projeto mais popular na Cloud Native Computing Foundation (CNCF) em termos de número de contribuições e, nos últimos seis meses, a taxa de contribuição foi maior do que nunca. Esse grande número de colaboradores mostra que o OpenTelemetry amadureceu e está começando a cruzar o abismo entre os primeiros usuários (que estão dispostos a estar à frente da curva) e os pragmáticos (que desejam produtos maduros).

O OpenTelemetry é focado em dados – especificamente, os dados e o fluxo de dados (telemetria) necessários para melhor entender, solucionar problemas e melhorar nossos aplicativos. Os dados só são úteis se puderem ser agregados, analisados e visualizados em escala. Embora o OpenTelemetry não forneça instruções sobre como visualizar os dados, ele nos permite parar de nos preocupar com quais dados podemos obter e, em vez disso, focar no que podemos fazer com os dados.

O OpenTelemetry também permite uma correlação natural entre essas fontes de dados, em vez de esperar que tentemos essa correlação nós mesmos. A capacidade do OpenTelemetry de correlacionar eventos entre aplicativos está nos levando à Observabilidade 2.0 – um novo benchmark para medir a atividade de aplicativos na nuvem. Os dados já estão correlacionados para nós, o que muda a maneira como vemos nosso espaço de aplicação. Não estamos mais limitados a saber apenas se o aplicativo está em execução ou não; agora podemos entender o caminho que qualquer solicitação percorre em nossos aplicativos.

Dois projetos notáveis de código aberto precederam o OpenTelemetry: OpenTracing (OT) e OpenCensus (OC) . Ambos assumiram o desafio de padronizar o formato dos dados de rastreamento para que pudéssemos obter as informações necessárias e entender como isso impactava nossos aplicativos modernos. Embora cada projeto tivesse semelhanças, eles competiam por recursos e as empresas muitas vezes tinham que escolher apenas um. Em março de 2019, os dois projetos anunciaram sua fusão no OpenTelemetry com o objetivo de unificar como os dados de rastreamento são gerados e formatados. O projeto OpenTelemetry está definindo ainda mais padrões para aquisição de outras classes de dados de observabilidade ( métricas e registros ) por meio dos mesmos canais de telemetria dos rastros, levando a mais integração e clareza.

A seguir, vamos analisar dois aspectos funcionais interessantes do OpenTelemetry: rastreamento distribuído e inteligência de aplicação .

Por que o rastreamento distribuído é necessário em arquiteturas de aplicativos modernos

Embora o rastreamento distribuído já exista há anos, muitas mudanças na última década aumentaram sua necessidade. Usando a estrutura Cynefin , podemos destacar algumas das mudanças e desafios que enfrentamos agora em aplicações modernas:

A estrutura Cynefin ilustra como podemos mudar nossas práticas à medida que passamos do simples para o complexo. O desafio é que nosso movimento segue dois caminhos separados, cada um com suas próprias características, e tentar pegar um atalho diretamente do simples para o complexo muitas vezes cria desordem e progresso incompleto.

Vamos identificar quais elementos criam os caminhos em nossa jornada de aplicativos modernos e nativos da nuvem. Em nosso primeiro caminho (o eixo Y no diagrama Cynefin), temos aplicativos modernos que geralmente são arquiteturas de microsserviços, onde cada aplicativo executa uma tarefa específica. No segundo caminho (o eixo X), nosso ambiente complicado é efêmero, pois as instâncias de microsserviços aumentam e diminuem em resposta à demanda e são movidas para hosts diferentes em resposta a problemas de rede.

Também temos que considerar o surgimento e o crescimento massivo de ambientes de nuvem como Amazon Web Services (AWS), Microsoft Azure e Google Cloud Platform (GCP). Uma vantagem dessas nuvens é a resposta elástica – expansão ou contração de recursos para corresponder ao nível atual de demanda. Com o impacto adicional da orquestração de contêineres (mais comumente usando o Kubernetes), começamos a ver um comportamento caótico à medida que o número e a localização dos recursos mudam ao longo do tempo. (Mesmo essa visão relativamente restrita é caótica, e elementos como funções sem servidor podem torná-la ainda mais caótica.)

Em uma arquitetura moderna, com muitas partes separadas produzindo a telemetria necessária para monitorar e manter nossos aplicativos, a carga de dados é enorme e complicada. Os problemas podem não se repetir de forma confiável ou ser fáceis de serem provocados, pois não controlamos totalmente a infraestrutura e os caminhos de comunicação. Precisamos de tecnologia que nos permita rastrear todas as atividades e elementos relacionados, para que possamos entender e analisar nossos ambientes em mudança.

É aí que entra o OpenTelemetry.

O futuro do rastreamento distribuído com OpenTelemetry

O rastreamento distribuído está causando grandes mudanças no setor, especialmente em relação à forma como as solicitações geram uma visão interna do desempenho por meio de métricas. Com o rastreamento distribuído, podemos rastrear novas métricas de muitos tipos, mas mais comumente aquelas relacionadas ao número de solicitações por unidade de tempo, número de erros por unidade de tempo e quanto tempo uma solicitação agregada leva nessa unidade de tempo.

As métricas já existem há algum tempo: são fáceis de gerenciar e armazenar, agregam-se facilmente e se prestam à análise matemática. No OpenTelemetry, todos os aplicativos que geram métricas podem enviá-las para um ponto de coleta comum por meio de uma camada de telemetria (transferência), o que ajuda a alinhar os dados dos serviços fracamente acoplados que os geram. Isso inclui o alinhamento com a infraestrutura subjacente. Resumindo, com o OpenTelemetry, fica mais fácil adquirir e enviar métricas.

O OpenTelemetry também pode ajudar a resolver o problema de desvio e distorção de registro de data e hora, o que dificulta a correlação de eventos. O OpenTelemetry atribui a cada solicitação um TraceId , mas os dados ainda podem ser afetados por desvios e distorções, que geralmente aparecem em arquiteturas nativas da nuvem. Desvios e distorções podem resultar de caminhos de relatórios com durações variadas ou da falta de sincronização precisa entre os relógios nos vários hosts. Ao rastrear a comunicação entre componentes durante o processamento de tráfego, o rastreamento distribuído permite que o OpenTelemetry meça intervalos individuais – as unidades de trabalho e os blocos de construção de um rastreamento – sem exigir instrumentação profunda do aplicativo associado.

A combinação desses três sinais (categorias de telemetria) nos permite corrigir problemas e retornar nossos aplicativos à qualidade de produção:

  • Métricas – “Há algum problema?”
  • Rastros – “Onde está o problema?”
  • Logs – “Qual é o problema?”

É aqui que voltamos à Observabilidade 2.0. A capacidade de obter rastros e ver imediatamente quais métricas correspondem a cada rastro nos dá muito poder. Por exemplo, quando as métricas indicam um problema, o rastreamento distribuído permite que você volte até a solicitação específica que causou o problema inicial e acompanhe o progresso em cada etapa do atendimento da solicitação. Como nosso rastreamento é composto pelos intervalos na ordem em que ocorrem, podemos acompanhar a solicitação em cada etapa de sua jornada. Ter uma compreensão do que aconteceu, em que ordem – do evento inicial ao problema indicado e até o resultado final – nos permite definir exatamente “onde” dentro de nossos aplicativos concentrar nossa atenção.

Por mais simples que pareça, o aspecto de rastreamento distribuído do OpenTelemetry pode nos fornecer uma grande visão sobre o que nossos usuários estão vivenciando, sendo um proxy para o sucesso da solicitação e o tempo de execução. Como usuário, eu me importo com minha solicitação. Como engenheiro de confiabilidade de site (SRE), me preocupo com as solicitações agregadas . O OpenTelemetry me dá ambos, além da capacidade de detalhar desde o agregado até os detalhes específicos, já que ele foi projetado para disponibilizar todos os dados necessários em todos os aplicativos.

Inteligência de aplicação com IA e ML

Esse novo fluxo de dados do OpenTelemetry também nos permite ser adaptáveis e automatizados em nosso desenvolvimento e resposta operacional. Com todos esses dados acumulados, podemos tornar nosso aplicativo mais inteligente. Atualmente, a F5 está focada em ajudar nossos clientes em sua jornada de desenvolvimento e implantação do que chamamos de “ aplicativos adaptáveis ”. Aplicativos adaptáveis são exatamente o que parecem: aplicativos que ajustam seu comportamento de forma automática e inteligente em reação a mudanças em seu ambiente.

É por isso que você está vendo muito mais inteligência artificial (IA) e aprendizado de máquina (ML) em várias soluções. Mas não é só porque são termos em alta – IA e ML são úteis porque agora temos dados suficientes para chegar a conclusões precisas sobre causalidade e projetar respostas apropriadas.

Ao tornar os dados de telemetria acessíveis e padronizados, o OpenTelemetry torna a jornada para aplicativos adaptáveis muito mais fácil. À medida que diferentes tipos de produtos começam a gerar métricas semelhantes e ao fazer uso das convenções semânticas estabelecidas no OpenTelemetry, fica mais fácil correlacionar suas ações durante o processamento de solicitações e fornecer essas informações aos algoritmos de ML e IA para permitir que aplicativos e infraestrutura se adaptem dinamicamente.

Quando você entende a ciência de dados por trás de tudo isso e garante que seus dados de telemetria se relacionem com sua IA e ML, é aí que a natureza orientada por dados dos aplicativos adaptáveis pode evoluir e brilhar.

Resumo

A codificação da telemetria é uma vitória óbvia tanto para os usuários do OpenTelemetry quanto para os aplicativos que o utilizam como canal de telemetria. Os dados podem ser coletados de diversas fontes e encaminhados para quaisquer ferramentas de agregação e análise compatíveis. Além disso, o OpenTelemetry Collector libera os fornecedores da necessidade de implementar coletores eles mesmos. Em vez disso, eles podem se concentrar em aprimorar seu código para realizar análises significativas e tomar ações inteligentes, além de criar novas ferramentas para ajudar a entender esse novo mundo complexo e caótico. Na verdade, o OpenTelemetry Collector – apoiado pela inovação do código aberto – é imensamente capaz de trabalhar com quase todos os formatos existentes, ao mesmo tempo em que conecta a tecnologia ao futuro.

Com seu foco nas principais classes de dados que precisamos para entender nossos aplicativos, o OpenTelemetry tornou possível que nossos aplicativos fornecessem insights mais profundos sobre o desempenho e os problemas do nosso complexo mundo de aplicativos modernos. Ao correlacionar nossos dados e alinhá-los às convenções semânticas e padrões, o OpenTelemetry torna a jornada para aplicativos modernos mais acessível. E à medida que o projeto continua a amadurecer e a adoção continua a crescer, o OpenTelemetry é a abordagem clara para nossa compreensão mais profunda e nossa capacidade de aplicar técnicas de IA e ML para tornar essa complexidade compreensível.

Para saber mais sobre como os engenheiros de OSS da NGINX estão usando o OpenTelemetry, experimente a Arquitetura de referência de aplicativos modernos e o aplicativo de exemplo (Bank of Sirius).

Postagens relacionadas


"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."