Olá, você que me assiste, eu sou o Jacques e vamos falar agora de observabilidade na prática. Quero trazer para você uma visão arquitetural de como que as ferramentas de observabilidade trabalham e que preocupações você precisa ter, dependendo do apetite da empresa que você estiver trabalhando, do ponto de vista de observabilidade. Quero trazer também as principais ferramentas, ou algumas das principais ferramentas, para conseguir trazer o que elas entregam de melhor, dependendo do que você está buscando. E vamos fazer o curso. Tendo como base os pilares da observabilidade, métricas, tracing, logs, e outros elementos adicionais, como por exemplo, gestão de exceptions, controle de exceptions ali, qual a melhor forma de tratar. E aí, indo para o próximo passo aqui, acho que o primeiro passo que a gente precisa dar do ponto de vista arquitetural e trazer uma visão panorâmica para você entender como a observabilidade funciona e quais são as preocupações,, quero trazer primeiro esse panorama. Do lado esquerdo você tem as aplicações, então garantir que a gente está pisando no mesmo terreno aqui, você tem as aplicações, elas são construídas ali em .net, Java, Python, Node, alguma linguagem ou framework que você tenha domínio e utilize, e a infraestrutura que suporte essa aplicação. Bom, eu quero começar daqui. Por que eu estou separando esses dois componentes? Porque um pode influenciar, e a infraestrutura pode influenciar e vai influenciar diretamente na experiência que você precisa entregar para o cliente final e, consequentemente, potenciais defeitos que a sua aplicação pode ter, pode ser diretamente influenciado, pode estar diretamente influenciado por elementos de infra. Exemplo, problema relacionado à conexão com o banco de dados, trago aqui o MySQL comoSQL para representar, por exemplo, soluções de storage de persistência, mas aqui você pode ter N camadas de persistência e uma delas pode ter alguma escassez de recurso e impactar a eficiência da sua aplicação. E aí pode degradar performance ou algum tipo de problema. Por exemplo, o ponto de conexões do banco ele é limitado de acordo com a quantidade de memórias que você disponibiliza se esse pool de conexões faltar, eventualmente você vai ter algum problema isso pode ser um problema direto para a sua aplicação e observar e monitorar esse componente é tão importante quanto monitorar a aplicação, porque te ajuda a encontrar melhor a causa raiz daquele problema. A aplicação vai reportar que tem um problema, mas a causa raiz você consegue identificar mais facilmente correlacionando os eventos, os problemas que aconteceram com aquele banco de dados, por exemplo. Isso é o mesmo para a infraestrutura que você roda de fato a aplicação, como por exemplo o Docker ou uma máquina virtual, por exemplo, na nuvem. E seguindo aqui, a gente tem do outro lado o time que de fato precisa desses dados, por dois motivos, precisa para detectar o mais rápido possível qualquer problema, e conseguir identificar a causa raiz do problema para resolver mais tempestivamente. E como é que esses dados chegam até esse time? Primeiro, a etapa de ingestão ou captura. É importante trazer ele como um elemento separado, porque as ferramentas de observabilidade permitem uma certa flexibilidade, uma certa configuração. Saber que existe esse componente, como ele trabalha, é importante para você garantir uma observabilidade mais eficaz. E aí você precisa primeiro instrumentar as aplicações do lado esquerdo, garantir que elas permitem a coleta desses eventos. E aí você tem um componente de captura e ingestão que pode estar embutido aqui nas aplicações da infraestrutura ou pode ser um componente apartado. No segundo etapa aqui você tem a camada de persistência. Algumas ferramentas, a maioria delas já abstraem isso para você, mas é importante saber que ela existe porque ela traz um custo inerente da plataforma que ela vai utilizar, a infraestrutura, enfim, bem como o quão eficiente ela entrega e qual o nível de escalabilidade, qual o apetite por escalabilidade e alta disponibilidade que ela precisa entregar. Exemplo, a camada de persistência, seja abstraída por uma ferramenta, ela garante alta disponibilidade, ela resiste a uma falha de uma partição de um disco? É importante levar isso em consideração, principalmente se você for utilizar alguma solução mais caseira, ou implementar uma função existente dentro de casa, dentro da sua empresa, dentro da infraestrutura que você utiliza. Então, ela tem que ser eficiente o suficiente para suportar carries e escrita massiva de dados, mas o custo dela não deveria ser exacerbado ou extrapolar o custo da infraestrutura que de fato entrega para o cliente final o valor que ele espera no software, na aplicação que você disponibilizou. Uma vez estando na camada de persistência, entra a camada de visualização dos dados, a camada de visualização dos dados. É onde a equipe vai construir seus dashboards, vai poder realizar as queries de consulta, para conseguir detectar algum problema, alguma anomalia na infraestrutura e conseguir identificar a causa raiz mais rápido. Só que esse time não vai conseguir olhar a tela todos os dias, a cada hora, a cada minuto. Às vezes vai ter horário, tipo de madrugada ou no final de semana, que esse time não vai estar disponível, e aí você precisa ter uma lógica uma solução que permita acionar esse time onde mente caso alguma coisa esteja acontecendo, alguma coisa saia fora do controle as ferramentas também elas disponibilizam isso, mas eventualmente você precisa customizar ou implementar algumas configurações para fazer isso acontecer. Esse aqui é o panorama geral de como a observabilidade é implementada, é feita e como os dados chegam no destino. E aí você precisa se preocupar com a garantia de que esses dados vão chegar ao destino e que a implementação, a instrumentação no lado das aplicações não as impacte, não impacte o funcionamento correto delas. E aí, pegando aquele slide, exatamente, olhando agora para esses modelos, pensando em modelos de implementação, quanto maior a abstração para a ferramenta te der, menos preocupação você vai ter, por exemplo, com infraestrutura, hardware, enfim, que aquela solução precisa utilizar. Exemplo, a maioria dos serviços hoje tem uma forma de implementação SaaS, por exemplo, a AWS CloudWatchços hoje tem uma forma de implementação SaaS, por exemplo, a AWS CloudWatch, que é embutida na AWS, o DataDog, que é especialista aqui, é um APM que a gente vai falar mais pra frente, tem outras ferramentas como o Dynatrace, o Azure Monitors, enfim, são soluções que são praticamente SaaS, ou seja, você se preocupa apenas com a instrumentação da aplicação, às vezes eventualmente utilizar uma biblioteca, algum componente ali que o fornecedor instruiu o uso, você instrumenta, aplica aquele componente e os dados vão chegar no destino de acordo com o SLA do que o fornecedor te orientou, enfim, de acordo com o combinado ali com o fornecedor te orientou, enfim, de acordo com o combinado ali com o fornecedor da solução. Talvez você utilize soluções mais open source, enfim, mas existe a opção de utilizar dessa forma. Agora, existe uma opção mais intermediária em que as empresas optam de repente por alguma necessidade de compliance, algum órgão regulador, precisa implementar na sua infraestrutura a aplicação ou aquele componente de observabilidade. E aí eu estou falando aqui disponibilizar desde a camada de persistência, o serviço que vai ter persistência, se preocupar com as camadas de visualização, quais ferramentas de visualização vai utilizar, enfim. A disponibilidade dessas ferramentas, a empresa teria que se preocupar também, não só com a instrumentação da aplicação. E existem soluções, hoje em dia até bem menos, mas no passado era muito comum, por exemplo, gravar logs de aplicação em banco de dados. Eu acho que não é a melhor solução, muito pelo contrário, mas era assim que muitas empresas trabalhavam há 20 anos atrás. E como muito sistema legado ainda existe, ou adando hoje, eventualmente pode ser que você encontre alguma solução desse tipo. E com esse conhecimento de observabilidade você pense, como que eu posso melhorar essa aplicação? Em que componentes que eu posso ajustar nessa infraestrutura com conhecimento daqui para você conseguir fazer com que essas aplicações mais caseiras utilizem softwares de observabilidade mais sofisticados?