<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andressa Abrantes</title>
    <description>The latest articles on DEV Community by Andressa Abrantes (@andressa_abrantes).</description>
    <link>https://dev.to/andressa_abrantes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2139373%2Fc2a75f1b-7d65-4fc2-9803-0cbb063f927f.jpg</url>
      <title>DEV Community: Andressa Abrantes</title>
      <link>https://dev.to/andressa_abrantes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/andressa_abrantes"/>
    <language>en</language>
    <item>
      <title>Boas Práticas de Dash de Monitoramento para Observabilidade: Um Guia Simples</title>
      <dc:creator>Andressa Abrantes</dc:creator>
      <pubDate>Wed, 16 Oct 2024 21:50:43 +0000</pubDate>
      <link>https://dev.to/andressa_abrantes/boas-praticas-de-dash-de-monitoramento-para-observabilidade-um-guia-simples-2m3m</link>
      <guid>https://dev.to/andressa_abrantes/boas-praticas-de-dash-de-monitoramento-para-observabilidade-um-guia-simples-2m3m</guid>
      <description>&lt;p&gt;Hoje em dia em sistemas distribuídos, a observabilidade se tornou uma prática essencial. Mais do que apenas saber que há um problema, o real  objetivo é descobrir por que ele está acontecendo e, claro, como corrigi-lo. Dashboards de monitoramento são ferramentas muito poderosas que ajudam a transformar a enxurrada de dados de logs, métricas e traces em insights úteis.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é Observabilidade e por que importa?
&lt;/h2&gt;

&lt;p&gt;A observabilidade é definida como a capacidade de entender o que está acontecendo dentro de um sistema a partir de suas saídas. Para sistemas complexos, como microsserviços e arquitetura serverless, essas saídas vêm na forma de dados de telemetria: logs, métricas e traces.&lt;/p&gt;

&lt;p&gt;Segundo Shaun McCormick, engenheiro sênior da BigCommerce,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"observabilidade não é apenas saber que um problema está acontecendo, mas saber por que está acontecendo e como posso consertar isso".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ou seja, não adianta só receber alertas de que "algo deu errado". É preciso ir além, descobrindo a causa raiz e traçando o caminho completo do efeito até o problema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Boas Práticas de Dash de Monitoramento
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Defina metas claras e faça comparações&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quando se trata de monitoramento, você precisa comparar indicadores com metas de desempenho. Um dashboard eficaz não só exibe dados brutos, mas também ajuda a entender como eles se comparam com os objetivos do sistema.&lt;/p&gt;

&lt;p&gt;Imagine que você tem um serviço de back-end e quer monitorar o tempo de resposta. Definir metas como "menos de 200ms" permite criar alertas mais eficazes e priorizar o que precisa de atenção imediata.&lt;/p&gt;

&lt;p&gt;Se o tempo de resposta médio de um serviço de API é 250ms, mas a meta é 200ms, o dashboard pode destacar isso visualmente com cores (vermelho para problemas, verde para tudo dentro da meta). Isso ajuda a identificar rapidamente onde o desempenho está abaixo do esperado.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agrupe KPIs e Mantenha a Coerência Visual&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agrupar KPIs (indicadores de desempenho), por exemplo, semelhantes em uma mesma seção do dashboard facilita a interpretação. Mantenha também um padrão visual, como usar as mesmas cores para indicadores e gráficos relacionados, o que torna a experiência de navegação mais fluida e clara.&lt;/p&gt;

&lt;p&gt;Num dashboard de monitoramento de desempenho, você pode agrupar métricas de CPU, memória e tempo de resposta numa seção, enquanto na outra parte do dashboard agrupa dados de erros e logs. Além disso, usar uma cor padrão, como azul para desempenho e vermelho para erros, ajuda na consistência.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Use alertas personalizados para evitar ruído&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Muitos alertas podem causar "fadiga de alerta", dificultando a priorização de problemas realmente urgentes. Configure alertas personalizados para notificar o time apenas sobre questões críticas, evitando sobrecarga com notificações irrelevantes.&lt;/p&gt;

&lt;p&gt;Se um serviço está enfrentando um pico de 5% de erros em solicitações HTTP, não é necessário notificar o time inteiro. Mas se esse número subir para 15%, aí sim um alerta automático para a equipe de DevOps pode ser acionado, destacando a causa e sugerindo possíveis soluções.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deixe o dashboard dinâmico e interativo&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Os dashboards devem ser fáceis de navegar e filtrar. Ao fazer isso, você cria uma ferramenta poderosa que pode atender a diferentes usuários da equipe, como desenvolvedores, DevOps, ou gestores.&lt;/p&gt;

&lt;p&gt;Imagine um dashboard de vendas que permite filtrar dados por região ou vendedor com um simples clique. No mundo de monitoramento de sistemas, isso pode ser aplicado filtrando dados de uma aplicação específica ou de uma zona geográfica.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Foque nos indicadores essenciais&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Menos é mais. Focar nos indicadores mais importantes para o seu contexto de monitoramento faz toda a diferença. Um dashboard sobrecarregado de dados pode atrapalhar, tornando difícil identificar o que realmente precisa de atenção.&lt;/p&gt;

&lt;p&gt;Em vez de monitorar todas as métricas possíveis de um serviço (latência, tempo de resposta, taxa de erros, uso de CPU, etc.), escolha aquelas que são mais relevantes para o negócio naquele momento. Se o foco é performance, priorize latência e tempo de resposta.&lt;/p&gt;

&lt;p&gt;Monitorar não é apenas sobre desempenho. Também precisamos nos preocupar com segurança. Certifique-se de que o sistema está monitorando atividades suspeitas, como acessos não autorizados, para garantir que você consiga agir rapidamente caso algo saia dos padrões.&lt;/p&gt;

&lt;p&gt;Além disso, automatize sempre que possível. Ferramentas de monitoramento automatizadas ajudam a encontrar padrões de falhas, ajustando recursos ou até remediando problemas antes mesmo de um humano intervir.&lt;/p&gt;

&lt;p&gt;No geral, dashboards de monitoramento bem construídos são mais do que apenas uma exibição de dados – são a chave para garantir a estabilidade e a confiabilidade dos seus sistemas. Ao seguir essas boas práticas, você torna a Observabilidade não apenas mais fácil, mas também mais eficiente, ajudando a resolver problemas antes que eles se tornem críticos.&lt;/p&gt;

&lt;p&gt;artigo feito por &lt;a class="mentioned-user" href="https://dev.to/andressa_abrantes"&gt;@andressa_abrantes&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/kelvia_santos"&gt;@kelvia_santos&lt;/a&gt; e &lt;a class="mentioned-user" href="https://dev.to/ana_juliarauber"&gt;@ana_juliarauber&lt;/a&gt; &lt;/p&gt;

</description>
      <category>observability</category>
      <category>devops</category>
      <category>softwaredevelopment</category>
      <category>programming</category>
    </item>
    <item>
      <title>Observabilidade</title>
      <dc:creator>Andressa Abrantes</dc:creator>
      <pubDate>Wed, 02 Oct 2024 20:40:44 +0000</pubDate>
      <link>https://dev.to/andressa_abrantes/observabilidade-4m86</link>
      <guid>https://dev.to/andressa_abrantes/observabilidade-4m86</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introdução&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Quantos “apagões de incêndio” você já enfrentou tentando entender o que realmente acontece dentro dos seus sistemas? E se, em vez de reagir a problemas, você pudesse preveni-los e solucionar a causa raiz antes mesmo que impactem seus usuários?&lt;/p&gt;

&lt;p&gt;Com a crescente complexidade dos sistemas de software, equipes vivem em constante estado de alerta, “apagando incêndios” para corrigir falhas e garantir que tudo funcione perfeitamente. Com a explosão de microsserviços e arquiteturas distribuídas, esse desafio se intensificou: são incontáveis pontos de falha, interações complexas e um volume colossal de dados para analisar. Tentar prever e combater cada problema em um sistema tão intrincado se torna uma tarefa quase impossível, como tentar apagar um incêndio colossal usando apenas um balde d’água.&lt;/p&gt;

&lt;p&gt;É nesse cenário desafiador que a Observabilidade surge como um "extintor de incêndio inteligente". Mais do que apenas “apagar incêndios” quando eles surgem, a Observabilidade fornece às equipes as ferramentas certas para prevenir - identificar gargalos e riscos potenciais, diagnosticar - compreender a causa raiz do problema com rapidez e precisão e solucionar- minimizar impactos e evitar que os problemas se repitam.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Observabilidade&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Mas o que é a Observabilidade? Vamos começar pelo termo. Segundo FONG-JONES, L. &lt;em&gt;et al&lt;/em&gt;.(2018) o termo Observabilidade surge em 1960 no contexto da Teoria de Controle do engenheiro húngaro-americano Rudolf E. Kalman e essa teoria lida com sistemas dinâmicos (mecânicos, elétricos, etc.) e busca maneiras de controlá-los através da análise de suas entradas e saídas. Nesse contexto, ela se referia à capacidade de determinar o estado interno de um sistema (ex: posição, velocidade) apenas observando suas saídas (ex: sensores).&lt;/p&gt;

&lt;p&gt;Engenheiros de software, diante da crescente complexidade dos sistemas modernos - com seus microsserviços, arquiteturas distribuídas e alta dinamicidade -, enxergaram na Observabilidade uma ferramenta poderosa para solucionar os desafios de monitoramento e gerenciamento. Essa adaptação para o mundo virtual, porém, exige uma mudança de paradigma. Para tornar essa mudança possível, diversas ferramentas de Observabilidade, como plataformas que integram métricas, logs e traces, além de soluções de rastreamento distribuído e análise de alta cardinalidade, vêm sendo desenvolvidas e aprimoradas, e vamos explorá-las mais adiante neste artigo.&lt;/p&gt;

&lt;p&gt;FONG-JONES, L. &lt;em&gt;et al&lt;/em&gt;.(2018) argumentam que o monitoramento tradicional se torna ineficaz e insuficiente diante da complexidade dos sistemas atuais. Baseado em métricas predefinidas e alertas para problemas conhecidos, ele opera sob a falsa premissa de que as falhas são previsíveis e que as equipes podem antecipar todas as métricas relevantes. Em um ambiente onde as falhas são imprevisíveis e interconectadas, essa abordagem se mostra limitada e reativa, deixando as equipes “apagando incêndios” sem entender a raiz dos problemas. A Observabilidade, por outro lado, oferece uma visão holística, permitindo investigar causas desconhecidas, fazer perguntas exploratórias e compreender o sistema em sua totalidade. Essa abordagem impacta diversas áreas da engenharia de software, indo além dos desenvolvedores - um tópico que também exploraremos mais adiante.&lt;/p&gt;

&lt;p&gt;Ao abordarem sobre a adaptação do conceito de Observabilidade para o universo do software, FONG-JONES, L. &lt;em&gt;et al&lt;/em&gt;.(2018) definem Observabilidade como a capacidade de entender e explicar qualquer estado que o sistema possa apresentar, por mais incomum ou complexo que seja. Essa compreensão, alcançada através da análise profunda dos dados do sistema, sem a necessidade de modificar o código, permite investigar e solucionar problemas de forma iterativa e exploratória.&lt;/p&gt;

&lt;p&gt;Para ilustrar essa capacidade, os autores propõem uma série de perguntas desafiadoras, como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Você consegue entender o que qualquer usuário específico do seu software pode estar vivenciando em um determinado momento?"&lt;/li&gt;
&lt;li&gt;"Você pode comparar grupos arbitrários de solicitações de usuários para identificar corretamente quais atributos são comumente compartilhados por todos os usuários que estão enfrentando comportamento inesperado em seu aplicativo?"&lt;/li&gt;
&lt;li&gt;"Após encontrar atributos suspeitos em uma solicitação de usuário individual, você pode pesquisar em todas as solicitações de usuários para identificar padrões comportamentais semelhantes para confirmar ou descartar suas suspeitas?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ao refletir sobre essas e outras perguntas que abordam desde a experiência individual dos usuários até a capacidade de solucionar problemas complexos, o leitor começará a entender a importância crucial da observabilidade para as equipes de engenharia de software.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7mw8sfdvk9rb6yycm2wg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7mw8sfdvk9rb6yycm2wg.png" alt="Observability is how well you understand your complex IT state."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;fonte: &lt;a href="https://newrelic.com/pt/blog/best-practices/what-is-observability" rel="noopener noreferrer"&gt;https://newrelic.com/pt/blog/best-practices/what-is-observability&lt;/a&gt;  &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Característica&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Observabilidade&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Monitoramento&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Objetivo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Entender o “porquê”&lt;/td&gt;
&lt;td&gt;Detectar o “quê”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Abordagem&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Proativa&lt;/td&gt;
&lt;td&gt;Reativa&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dados&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Alta cardinalidade e dimensionalidade&lt;/td&gt;
&lt;td&gt;Baixa cardinalidade e dimensionalidade&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ferramentas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Flexíveis e exploratórias&lt;/td&gt;
&lt;td&gt;Dashboards e alertas&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Pilares da Observabilidade e Instrumentação: A Base para Sistemas Resilientes
&lt;/h3&gt;

&lt;p&gt;Em ambientes complexos, garantir a saúde e o desempenho de um sistema requer mais do que simplesmente monitorá-lo superficialmente. É aí que entram os pilares da &lt;strong&gt;observabilidade&lt;/strong&gt; — &lt;strong&gt;métricas&lt;/strong&gt;, &lt;strong&gt;logs&lt;/strong&gt; e &lt;strong&gt;traces&lt;/strong&gt; — para fornecer uma visão detalhada e completa de tudo o que está acontecendo no sistema. Porém, para que esses dados sejam realmente úteis, é fundamental uma boa &lt;strong&gt;instrumentação&lt;/strong&gt;. Instrumentar corretamente um sistema significa garantir que ele gere as informações certas para monitoramento e diagnóstico, facilitando a manutenção e a correção de falhas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Métricas: Monitorando a Saúde do Sistema
&lt;/h3&gt;

&lt;p&gt;As métricas são números que mostram o estado atual de uma aplicação. Vamos imaginar um &lt;strong&gt;serviço de e-commerce&lt;/strong&gt;. Entre as principais métricas monitoradas estariam a &lt;strong&gt;quantidade de transações por segundo&lt;/strong&gt;, o &lt;strong&gt;tempo de resposta da API&lt;/strong&gt; e o &lt;strong&gt;uso de memória&lt;/strong&gt; dos servidores.&lt;/p&gt;

&lt;p&gt;Por exemplo, suponha que uma métrica esteja mostrando que o tempo de resposta de uma API de checkout subiu de 200 ms para 2 segundos após o aumento de usuários em um evento de promoções. Essa métrica pode acionar um alerta automático, notificando a equipe sobre o comportamento anômalo, possibilitando uma ação rápida para resolver o problema antes que os clientes comecem a abandonar o carrinho de compras.&lt;/p&gt;

&lt;p&gt;Ferramentas como Prometheus permitem a coleta dessas métricas, e Grafana pode ser usada para criar dashboards que mostram a evolução delas ao longo do tempo. Mas para que isso funcione bem, é essencial que a instrumentação seja configurada para gerar as métricas certas. Se o sistema não estiver instrumentado para coletar métricas detalhadas, você pode até saber que há um problema, mas não conseguirá entender suas causas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Logs: O Registro de Eventos em Detalhe
&lt;/h3&gt;

&lt;p&gt;Logs são como o diário de bordo do seu sistema, registrando tudo o que acontece, desde requisições HTTP até erros de execução. Para exemplificar, imagine um sistema de &lt;strong&gt;gestão de pedidos&lt;/strong&gt; que começa a registrar um erro específico quando clientes tentam atualizar o endereço de entrega.&lt;/p&gt;

&lt;p&gt;Um log bem instrumentado capturaria os detalhes desse erro: o &lt;strong&gt;timestamp&lt;/strong&gt;, a &lt;strong&gt;requisição falha&lt;/strong&gt;, o &lt;strong&gt;ID do pedido&lt;/strong&gt; e uma mensagem detalhando o problema. Esse tipo de log torna possível que os desenvolvedores identifiquem rapidamente a origem do erro — seja uma falha de validação de dados ou um problema com um serviço externo.&lt;/p&gt;

&lt;p&gt;Se o sistema gerar logs sem muitos detalhes, a equipe de desenvolvimento pode perder muito tempo tentando reproduzir o erro. Além disso, se os logs forem mal formatados, será difícil analisá-los automaticamente. Ferramentas como &lt;strong&gt;Elasticsearch&lt;/strong&gt; e &lt;strong&gt;Kibana&lt;/strong&gt; são usadas para indexar e visualizar logs, o que torna mais simples encontrar problemas em sistemas complexos.&lt;/p&gt;

&lt;p&gt;Por exemplo, um log estruturado para o erro de atualização de endereço poderia ser assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timestamp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2024-09-28T14:33:45Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ERROR"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"service"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"OrderService"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"orderId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"12345"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Failed to update shipping address"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"errorDetails"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Validation failed: ZIP code format invalid"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com essa estrutura, fica fácil filtrar logs semelhantes e diagnosticar rapidamente o que está acontecendo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traces: Entendendo a Jornada Completa
&lt;/h3&gt;

&lt;p&gt;Imagine que seu sistema de &lt;strong&gt;streaming de vídeo&lt;/strong&gt; esteja recebendo reclamações de que vídeos demoram a carregar. No entanto, o problema não aparece consistentemente, e ocorre apenas para certos usuários em momentos específicos. Através de &lt;strong&gt;traces&lt;/strong&gt;, é possível acompanhar o caminho completo de uma requisição — desde o momento que o usuário solicita o vídeo até o processamento final e a entrega do conteúdo.&lt;/p&gt;

&lt;p&gt;Suponha que o trace mostre que a requisição passa por três microserviços: um para &lt;strong&gt;autenticação do usuário&lt;/strong&gt;, outro para &lt;strong&gt;recuperar o catálogo de vídeos&lt;/strong&gt; e um último para &lt;strong&gt;servir o vídeo em si&lt;/strong&gt;. Ao observar os tempos de execução de cada serviço, você descobre que o &lt;strong&gt;serviço de catálogo&lt;/strong&gt; está demorando 5 segundos para responder, muito mais do que os outros.&lt;/p&gt;

&lt;p&gt;Com essa visão, é possível isolar o problema e trabalhar diretamente na otimização desse serviço, talvez ajustando as consultas ao banco de dados ou aumentando a capacidade de servidores. Ferramentas como &lt;strong&gt;Jaeger&lt;/strong&gt; e &lt;strong&gt;Zipkin&lt;/strong&gt; são usadas para rastrear e visualizar essas requisições distribuídas, facilitando a detecção de gargalos.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Importância da Instrumentação
&lt;/h3&gt;

&lt;p&gt;Agora, pense em um cenário onde um time configurou um sistema de observabilidade, mas deixou de instrumentar corretamente algumas partes críticas da aplicação. Talvez eles coletem métricas básicas, como &lt;strong&gt;uso de CPU&lt;/strong&gt;, mas não instrumentaram suas APIs para gerar métricas detalhadas, como o tempo de resposta por endpoint. Ou talvez existam logs, mas eles são dispersos e pouco informativos, dificultando a depuração quando algo dá errado.&lt;/p&gt;

&lt;p&gt;A ausência de boa instrumentação leva à perda de insights valiosos. A equipe pode ter informações suficientes para saber que existe um problema, mas não terá a granularidade necessária para resolver rapidamente. A solução é planejar a instrumentação desde o início, assegurando que cada parte do sistema gera métricas, logs e traces relevantes para monitoramento e diagnóstico.&lt;/p&gt;

&lt;p&gt;Um exemplo prático seria uma aplicação de banco digital que, além de métricas básicas de uso do servidor, instrumenta detalhadamente seu serviço de transações. As métricas incluem o tempo de resposta para transferências entre contas, o número de transações por minuto e a taxa de falhas. Já os logs incluem eventos detalhados para cada transação, incluindo o status final e possíveis erros. Além disso, traces monitoram o caminho completo de uma transação, da autenticação até a atualização dos saldos.&lt;/p&gt;

&lt;p&gt;Os três pilares da observabilidade — métricas, logs e traces — proporcionam uma visão completa de um sistema, permitindo monitorar sua saúde e diagnosticar problemas com eficiência. No entanto, sem uma instrumentação bem-feita, esses dados podem se tornar inúteis ou insuficientes. A instrumentação adequada garante que os sistemas gerem dados relevantes, facilitando a manutenção proativa e a resolução rápida de falhas. Ao combinar observabilidade com uma boa estratégia de instrumentação, as equipes podem criar sistemas mais robustos, resilientes e alinhados com as necessidades do negócio.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tracing
&lt;/h2&gt;

&lt;p&gt;Em sistemas distribuídos, como aqueles que usam microserviços, a complexidade das interações torna a detecção e resolução de problemas mais desafiadora. É nesse cenário que o tracing se torna essencial para observar e entender o comportamento dessas interações.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tracing&lt;/strong&gt;, ou rastreamento, é uma técnica que permite seguir o caminho que uma requisição faz ao percorrer diversos serviços e componentes dentro de um sistema. Ele oferece uma visão detalhada de ponta a ponta, capturando dados sobre a jornada de cada requisição, desde o ponto de entrada até o ponto final. Dessa forma, conseguimos identificar quais partes do sistema estão contribuindo para problemas de desempenho ou falhas específicas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integração com Logs e Métricas
&lt;/h2&gt;

&lt;p&gt;O verdadeiro potencial do tracing é realizado quando integrado aos outros pilares da observabilidade: logs e métricas. Enquanto as métricas fornecem uma perspectiva quantitativa sobre a saúde do sistema, os logs oferecem detalhes granulares sobre eventos específicos. O tracing atua como um elo, conectando essas informações e proporcionando um contexto contínuo para compreender o ciclo de vida completo de uma requisição.&lt;/p&gt;

&lt;p&gt;Dessa forma, métricas, logs e traces formam uma base sólida para a observabilidade, permitindo uma visão holística e detalhada do sistema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting: Resolvendo Problemas Complexos
&lt;/h2&gt;

&lt;p&gt;Uma das principais vantagens do tracing é o suporte ao troubleshooting. Ao utilizar tracing, as equipes podem reproduzir o fluxo de uma requisição com precisão, entender exatamente onde ocorreram falhas ou lentidões, e identificar o serviço ou componente responsável. Isso facilita a localização de problemas que seriam difíceis de diagnosticar apenas com logs ou métricas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;A compreensão da observabilidade é fundamental para profissionais de tecnologia, pois permite monitorar e entender o comportamento de sistemas complexos. Com conhecimentos em tracing, logging e métricas, as equipes podem tomar decisões informadas, melhorando continuamente a experiência do usuário e alinhando a tecnologia aos objetivos de negócio.&lt;/p&gt;

&lt;p&gt;A observabilidade, embora conceitualmente antiga, encontra uma nova aplicação em sistemas de software modernos, os quais exigem uma mudança de paradigma devido à sua crescente complexidade. &lt;/p&gt;

&lt;p&gt;A imprevisibilidade das falhas nesses sistemas torna o monitoramento tradicional ineficaz, demandando uma abordagem que permita analisar dados de forma abrangente e flexível para investigar qualquer problema, sem necessidade de predefinições. Ferramentas de observabilidade devem ir além da simples coleta de métricas, logs e traces, priorizando alta cardinalidade, dimensionalidade e explorabilidade dos dados para uma investigação profunda e eficaz.&lt;/p&gt;

&lt;p&gt;Artigo feito por: &lt;a class="mentioned-user" href="https://dev.to/andressa_abrantes"&gt;@andressa_abrantes&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/kelvia_santos"&gt;@kelvia_santos&lt;/a&gt; e &lt;a class="mentioned-user" href="https://dev.to/ana_juliarauber"&gt;@ana_juliarauber&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Referências:&lt;/p&gt;

&lt;p&gt;FONG-JONES, L. et al. Observability Engineering: Achieving Production Excellence. Sebastopol: O’Reilly Media, 2018. Disponível em: &lt;a href="https://learning.oreilly.com/" rel="noopener noreferrer"&gt;https://learning.oreilly.com/&lt;/a&gt;. Acesso em: 11 set. 2024.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>devops</category>
      <category>softwaredevelopment</category>
      <category>observability</category>
    </item>
  </channel>
</rss>
