DEV Community

Cover image for Observabilidade 101 - Entendendo o que acontece no seu sistema
Pedro Paulo Silva
Pedro Paulo Silva

Posted on

Observabilidade 101 - Entendendo o que acontece no seu sistema

Observabilidade

As aplicações, por muito tempo, eram construídas de maneira centralizada, os famosos monólitos, entretanto, ao longo dos últimos anos, a área de tecnologia vem mudando bastante.

As aplicações usam cada vez mais ferramentas e abordagens distribuídas, como Containers, Kubernetes, Microservices e Serverless, por exemplo. Essas tecnologias proporcionam diversas vantagens, a escalabilidade sendo uma das mais relevantes. Porém, introduziram complexidade adicional, fazendo com que as falhas sejam mais difíceis de prever, detectar e solucionar problemas.

Buscando resolver esse problema surge, na Engenharia de Software, o conceito de Observabilidade, buscando fornecer um nível de introspecção e ajudar as pessoas a raciocinar sobre os estados internos de seus sistemas.

Observabilidade é a habilidade de entender o que está acontecendo dentro do seu sistema com base em suas saídas. Isso significa que você deve saber explicar qualquer estado em que seu sistema possa entrar. Por exemplo: estado de falha, estado de lentidão etc. Busca alcançar uma melhor compreensão de como o software está operando.

Pilares da Observabilidade

Para tentar alcançar o maior entendimento do que está acontecendo no seu sistema, existem 3 principais pilares que, por si só, não fazem um sistema observável, mas relacionando eles se tem um entendimento muito bom dos processos do seu sistema.

Image description

Logs

Os logs são registros imutáveis que possuem data/hora de eventos que ocorrem em um sistema, eles fornecem contexto sobre o que está acontecendo no sistema e podem ser utilizados para identificar problemas e rastrear sua origem.

Podemos considerar então que as mensagens de logs representam os vários eventos que ocorrem nos sistemas, podendo ser informativos ou até mesmo registrar um problema que aconteceu em seu sistema.

Métricas

Quando pensamos em métricas para arquitetura de microservices, devemos conhecer o método RED. Esse método define as três principais métricas que devemos medir em microservices. São as métricas básicas que recebemos por padrão nas principais soluções de APM do mercado. As métricas RED são:

RATE

Número de requisições por segundo que seu serviço está atendendo.

ERROR

Número de requisições com falha por segundo.

DURATION

Tempo médio que o serviço gasta para processar cada requisição.

Tracing

Rastreamento distribuído (ou Distributed tracing) é um conjunto de técnicas, padrões e práticas que tem como principal objetivo mostrar o fluxo por onde passou uma requisição, se ela foi atendida e quanto tempo levou para a requisição ser atendida.

Vamos imaginar que esse usuário está enfrentando uma lentidão para receber a resposta de sua requisição. Sem usar distributed tracing (por exemplo, olhando os logs isolados de cada microservice) ficará difícil identificar rapidamente onde está ocorrendo o gargalo, onde podem ocorrer erros etc.

Com muitos serviços envolvidos em apenas uma única requisição, é difícil também você reportar as equipes responsáveis por esses componentes sem saber identificar o problema, gerando lentidão na resolução do problema.

Exemplo de tracing no New Relic:
Image description

Ferramentas de Observabilidade

Existem diversas ferramentas para lidar com cada pilar da observabilidade, umas fazem melhor uma coisa, outras tem melhor desempenho, etc. Você deve avaliar qual se encaixa melhor para o seu cenário e combiná-las.

A seguir listei algumas das ferramentas de observabilidade mais utilizadas no mercado

New Relic - https://newrelic.com/

Grafana - https://grafana.com/

Prometheus - https://prometheus.io/

Data Dog - https://www.datadoghq.com/

Conclusão

Esses são os conceitos básicos sobre observabilidade, seguem alguns links caso queira se aprofundar nesse assunto de extrema importância.

Top comments (3)

Collapse
 
scovl profile image
Vitor Lobo

Excelente artigo! Recomendo a leitura de um livro escrito em 2019 por Cindy Sridharan denominado Distributed Systems Observability. Cindy apresenta uma abordagem prática e aprofundada sobre como as equipes de engenharia podem lidar com os desafios de monitorar e solucionar problemas em sistemas altamente distribuídos.

O livro destaca a importância da observabilidade como uma prática fundamental para manter sistemas distribuídos em bom estado de funcionamento e oferecer uma experiência confiável para os usuários. A autora enfatiza que a observabilidade deve ser um esforço conjunto de todas as equipes de engenharia, e não apenas da equipe de operações ou de monitoramento.

Os desenvolvedores têm uma grande responsabilidade em garantir que seus sistemas possam ser monitorados e solucionados de maneira eficiente em caso de problemas. Isso significa projetar e implementar sistemas que possam ser facilmente monitorados e que gerem dados úteis para diagnosticar problemas. Também significa trabalhar em colaboração com as equipes de operações para entender as necessidades de monitoramento e solução de problemas do sistema.

Collapse
 
pedropms profile image
Pedro Paulo Silva

Obrigado pela recomendação, vou adicionar na minha lista!

Collapse
 
fernandoandrade profile image
Fernando Andrade

Ótimo artigo, eu desconhecia sobre os três pilares, vai me ajudar bastante!!