Pessoal, até agora eu passei para vocês os pilares da observabilidade, que são os três primeiros iniciais, e eu vou falar para vocês que são os pilares mais amplamente aceitos pela comunidade acadêmica, ou seja, são os pilares que são mais falados e são mais antigos, e que são os pilares base, ou seja, os pilares que fundamentaram a questão de observabilidade, beleza? Então são esses três, esses são os primeiros. que fundamentaram a questão de observabilidade, beleza? Então são esses três, esses são os primeiros. Eu vou comentar com vocês mais alguns que eu acho super importantes, que vêm nascendo ao longo dos últimos anos e que eles aparecem em vários papers da IBM, em vários papers de várias grandes empresas, como caras que a gente tem que começar a olhar com cuidado, dado as evoluções dos últimos, sei lá, 10, 15 anos, possivelmente. Então, por isso, eu acho importante a gente olhar para eles com cuidado, mas lembrem-se que não são pilares que estão em todos os livros, por exemplo, todas as literaturas que vocês pegarem de observabilidade, pode ser que vocês não vejam esses pilares tão amplamente divulgados, mas eles são pilares para a gente ficar de olho, porque com as tendências que a gente tem, eles acabam aparecendo aí para a gente prestar atenção, beleza? Depois o Jacques vai falar com vocês de mais três pilares que ele acha super importante e que eles também têm aparecido bastante nas discussões no dia a dia dos times e que eu acho que são importantes também para vocês. Então o hands-on vai tocar em mais três pilares. Mas vamos lá, os pilares iniciais que a gente falou até agora são esses. Esses são os pilares da observabilidade. Agora, eu vou incluir mais alguns para a gente pensar. Um deles é o frescura. Não é frescura de ser fresco, de não quero fazer as coisas. Não é isso. É frescura de frescor. Então, a frescura de dados que a gente está falando aqui, é sobre um dado atual. A informação ali está cada vez mais recente para a gente poder ter a decisão sendo tomada de forma coerente. Então, basicamente, a gente está falando desse dado atual. E por que é importante isso? As decisões precisam de dados atualizados. Se os dados estão desatualizados, você pode ter decisões incorretas e você pode acabar atrapalhando a operação ou até a estratégia de uma organização. Então é importante você não só ter o dado, mas ter o dado mais atual possível. Outra coisa também é a detecção em tempo real. Quando você tem os dados atuais ou frescos, você permite que você vai conseguir detectar o problema rapidamente e vai poder resolver possíveis anomalias. Por quê? Imagina que você tem algum problema acontecendo, mas o dado que você tem para avaliar não é o mais atual. Possivelmente você vai cometer um erro ali, pode até piorar o problema que você tem nas mãos. Outra coisa também é a confiança nos dados. Dados desatualizados são dados que não são confiáveis, porque tudo bem, é um dado quente, é um dado bom, mas é um dado que já não é mais verdade, ele já está no passado. Então é importante você ter esses dados atualizados para você ter confiança nas análises que você tem pela frente. Por que eu estou falando disso, tá bom? Porque quando a gente está falando do ambiente onde a gente está usando cada vez mais dados para tomada de decisão, isso começa a ficar super importante no nosso dia a dia. Então, para monitorar esse frescor dos dados, tem algumas abordagens que a gente pode fazer. Uma delas é o timestamp. Então, a gente colocar timestamp em cada registro. Quando a gente falou dos logs, ele já fala um pouco sobre isso. Está vendo que é uma capacidade que ela acaba cruzando os pilares. Você tem que pensar em timestamp para você saber quando aquele dado foi gerado e você saber se é o melhor dado. Lembra o caso que eu falei sobre uma análise que eu fiz, que acabou ficando totalmente errada porque eu estava entendendo os dados errados, porque eles não se correlacionavam e porque eles não tinham timestamp relacionando, então ficava muito difícil saber quando aconteceu. Aqui também é importante a gente ter as métricas de atualização, medir com qual frequência os dados estão sendo atualizados e comparar com o que a gente tem de espera. Imagina que a gente tem, por exemplo, um dado que ele tem atualização a cada minuto. Se eu vejo que passou dois minutos, temos um problema. Possivelmente eu estou desatualizado, ou atualização diária, e assim por diante. É importante ter esse tipo de visão também. E a gente também tem que ter os alertas ali que vão notificar quando os dados não estão sendo atualizados, quando a gente estava esperando. Ou seja, se eu tiver a métrica de atualização falhando, eu começo a gerar alertas para a gente começar a olhar para isso com mais cautela. Agora vamos falar de outro. A distribuição. A distribuição é sobre a integridade dos dados em todo o sistema. Então ele vai garantir que os dados não só estejam atuais, como eu falei antes, mas que eles estejam corretos e completos em todos os destinos que a gente está falando. Por quê? Hoje em dia, a gente está falando cada vez mais do dado, ele está sendo distribuído ao longo de todos os sistemas, ele está sendo utilizado por vários pontos. Então, imagina num caso aqui que a gente está colocando um dado num tópico Kafka que vai ser lido por várias pessoas, que tem vários assinantes ali. Pô, como que você vai garantir que aquilo está sendo propagado de forma correta? Então às vezes, dependendo da aplicação que você vai fazer, você precisa ter esse tipo de observabilidade se o dado continua coerente durante todo esse fluxo. ele continua coerente durante todo esse fluxo. Então, a importância dessa distribuição é crucial para a gente conseguir garantir que as informações estão completas até o final. Então, quais são os grandes três pontos que a gente quer olhar aqui? A integridade do dado, ou seja, eu preciso que eles sejam distribuídos corretamente para eu não ter nenhuma inconsistência de análise e de processamento mais para frente. Tem outros sistemas que podem usar esse dado para processamento, eu preciso ter um dado que ele tem que ser confiável, então ele precisa ser correto para eu também ter confiança naquilo que a gente está fazendo e tomar as decisões certas em cima do dado que está sendo gerado, e eu tenho que gerar eficiência operacional, ou seja, se eu tiver uma distribuição do dado certo, eu não preciso fazer retrabalho, e eu garanto que todos os processos que eu tenho pela frente vão funcionar de forma eficiente, eu não vou acabar atrapalhando nada e nem tomar decisões erradas também. Como é que a gente faz a monitoração dos dados? Para monitorar, a gente tem algumas abordagens que eu acho importante a gente pensar. A primeira delas é a validação de consistência. Você vai verificar se os dados, em diferentes instintos, são consistentes entre si. Eu aprendi sobre este assunto em um projeto gigante que a gente estava fazendo mais ou menos há 14 anos atrás, creio eu, e há 14 anos atrás a gente estava olhando como que a gente ia fazer a propagação de dados e como é que isso ia funcionar dentro dos sistemas complexos que a gente estava montando. E naquela época, graças a Deus, eu tive grandes professores, um grande arquiteto, era arquiteto especialista na época já, e hoje em dia é um cara fenomenal, que já tem 300 anos de carreira e que também já conhece muito, e na época já conhecia, hoje em dia conhece ainda mais. E eu lembro que ele chamou esse tipo de abordagem de polícia de dados. Eu gosto dessa abordagem, que é basicamente alguém que vai bater o cara crachado as coisas, tá bom? Então, a validação de consistência aqui é você vai verificar se os dados de diferentes destinos, eles estão sendo consistentes. Você pode ter algum tipo de correlação pra bater em alguns endpoints aqui de utilização dos seus dados, se eles continuam fazendo sentido ou se teve algum tipo de transformação nele que atrapalhou e que gerou incoerência, pode ser também. Depende do tipo de aplicação que você está fazendo e do tipo de dado que você está gerando. Tem outra coisa que também pode ser utilizada que é a métrica de distribuição, me disse todos os dados que foram A metra de distribuição, M disse que todos os dados que foram distribuídos estão coerentes com o que você tinha de requisito esperado. Ou seja, você pode fazer essa validação antes e não no fim do caminho. Então, antes de ser consumido, você faz a validação. E você tem os alertas de distribuição que eles vão notificar quando tiver discrepância, tanto na hora que você vai distribuir e você pode fazer os mesmos alertas na hora da consistência na ponta final também. É super importante. No caso que eu comentei para vocês, eu acho legal contar os casos que eu passei, aquela polícia de dados que a gente falou, ela gerava alertas para todo mundo, caso tivesse alguma discrepância de dados, porque a gente estava falando de dados muito complicados e muito críticos, tá bom? Pô, Natan, se eu vou pôr isso para todo quanto é tipo de dado? Não, não. Se for um dado simplesmente, um dado mais simples, um dado que não tem tanta criticidade, não precisa, porque sai caro fazer isso. Você vai ter que fazer uma aplicação a mais para conseguir bater as coisas e fazer as coisas terem coerência, tá bom? Então terem coerência, tá bom? Então, usem com cautela. Uma, eu coloquei aqui um exemplo, um exemplo bem de negócio e totalmente diferente para a gente pensar, tá? Então, imagina que você tem um monitoramento ali de dados de venda em diferentes regiões. Eu fiz isso pensando um pouco numa, na empresa de uma, da minha mãe, não vou ser nem, vou ser bem honesto aqui, ela trabalha com uma empresa de vendas, então ela trabalha dentro de uma empresa de vendas e dentro dessa empresa de vendas ela tem muito essa regionalidade, essa visão de como que cada vendedor está usando e assim por diante. Então isso veio à minha memória, eu tentei fazer um caso de uso com essa memória afetiva. Então vamos lá, o cenário que a gente tem aqui é uma empresa global de varejo que precisa garantir que os dados de varejo sejam distribuídos corretamente em diferentes sistemas regionais para análise de relatórios. Por quê? Porque se você tiver uma diferença nos seus relatórios de venda, você pode acabar gerando ou desconto adicional que não poderia ter ainda, gerando um problema no fluxo de caixa, ou você pode não estar dando desconto suficiente, dependendo da meta que você já bateu, e com isso você está perdendo venda que poderia ser muito rentável para o negócio. E você poderia até estar tendo muito estoque graças a isso e assim por diante. Então, uma relação entre estoque, entre meta e entre fluxo de caixa, que você precisa estar bem alinhado para você não cometer nenhum equívoco e não ser ineficiente, e com isso acabar gerando um prejuízo gigante para a empresa. Empresas que trabalham muito ali com preços que são competitivos precisam ter esse tipo de estratégia. Então vamos lá, a ação aqui é implementar um sistema de monitoramento de distribuição dos dados de vendas. Eu coloquei aqui um Kafka, uma ferramenta para usar um Kafka mesmo para você bater isso. E aqui o que você pode fazer é colocar o Kafka para distribuir os dados de vendas em tempo real para os sistemas regionais. Os tópicos, eles têm que garantir que os dados estão sendo encaminhados para os destinos corretos. Beleza. E você vai configurar ali os alertas para notificar que os dados não foram distribuídos conforme esperado. Aqui eu peguei dado na entrada, ou seja, você pode pegar pelo próprio Kafka e configurar ali pra você ver se você tá conseguindo fazer a distribuição certa ou se tá tendo algum problema aqui. Poderia ser o contrário, eu poderia pegar na saída lá e fazer aquela polícia que eu comentei, validando se os dados de saída estão batendo entre si, que também pode ser uma outra estratégia, mas ela é mais cara. Essa daqui é mais fácil, mais eficiente, mais barato, tá bom? Resultado, você vai garantir que todos os sistemas estão recebendo os dados completos e com isso você vai ter a análise correta de negócio para fazer as coisas acontecerem. Tá vendo? Não é uma observabilidade só técnica, é uma observabilidade que junta dados, junta negócio, vira um bololô só. A gente está cada vez mais próximo, cada vez menos separado nas nossas matérias. Vamos falar de mais uma de dados ainda, o volume. Ele vai se referir à quantidade de dados que você está gerando. Então, a gente falou primeiro, a gente começou falando sobre a qualidade do dado, se eu estou conseguindo gerar o dado, se eu estou conseguindo transmitir esse dado e assim por diante. E agora eu estou falando sobre o volume. Ou seja, eu tenho o volume de dado que tem que ser ingerido ali, tem que ser processado, que ele pode estar maior ou menor, dependendo do que está tendo de problema ou não. Então é legal a gente pensar nisso um pouquinho aqui, que é o volume. Perdão, ficou errado ali, aqui em cima eu coloquei componente dos traces, acabei não deletando esse pedaço, mas a gente está falando de volume de dados, tá gente? Perdão. Então vamos lá. Nos volumes dos dados, ele ali vai ser um indicador que a saúde dos meus dados está sendo preservada. Ou seja, se eu comecei a ter um volume de dados muito maior, é esquisito, porque eu não estava preparado para aquilo. Muito menor também é esquisito. Se eu começar a ter muito maior, eu posso ter ainda um outro problema. Eu posso começar a gerar ou custo elevado, que eu posso ter um outro alerta de custo de Finops também aqui para conseguir me avisar disso. Então, puta, eu estou tendo muito dado. Eu comecei a escalar muito o meu banco para conseguir lidar com isso. Vou estar gastando dinheiro. Olha o dinheiro indo embora. Então, aqui é um ponto para a gente monitorar, ou eu estou tendo um baixo uso de dados e aí eu estou ou gastando muito dinheiro também pode ser uma ideia, eu estou gastando muito, eu poderia diminuir isso, já que eu estou tendo menos dados sendo usado ou pior, eu estou tendo alguma aplicação que está fora e está capotando o dado ele pode estar totalmente discrepante porque eu estou tendo um dado pela metade eu não estou conseguindo gerar a informação por completa, tá bom? Então aqui para a gente ficar com isso na cabeça. Então aqui para você ter a escalabilidade monitorar, o volume vai ajudar você a garantir que a estrutura pode estar na sua escalabilidade correta, como eu falei. A integridade dos dados, se os dados estão sendo gerados, eles estão com integridade, se está com menos dado ou mais dado, pode ter alguma coisa esquisita acontecendo. E você pode ter uma prevenção ali de problemas quando você tem ali uma tendência de aumento etc, você consegue se planejar para não ter nenhum problema de capacidade de desempenho, capotar um banco de dados que normalmente tem um monte de gente utilizando, então não é legal ter problema em banco de dados acho que é o desespero de todo desenvolvedor de todo engenheiro de software, é um banco de dados topando aqui, né, gente? Então, vamos lá. Quando a gente está falando do volume, como é que a gente vai monitorar isso? Para monitorar o volume de dados, eu coloquei aqui três abordagens também. Você pode ter métrica de ingestão de dados, ou seja, quantidade de dados que estão sendo incluídos por hora, por minuto, tanto faz, depende aí da sua aplicação, do que você está olhando. A métrica de processamento de dados, quantos dados estão sendo processados e armazenados, é meio que um throughput da situação aqui. E os alertas de volume, com base nesse tipo de visão que você tivesse, você tem que gerar os alertas ali para quando você tem, por exemplo, uma queda significativa de volume de dados ou aumento significativo de volume de dados chegando, tá bom? Vamos falar agora um pouquinho de volume, um caso aqui para a gente pensar junto, tá? Imagina um serviço de streaming de novo, ele precisa garantir que a quantidade de dados de vídeo que está sendo transmitida não vai sobrecarregar a infraestrutura de rede deles, porque quando a gente está falando de streaming, isso é super importante, né gente? Então a ação aqui para monitorar esse volume, essa quantidade de dados que está sendo transmitido, você pode usar o Prometheus e o Grafana, que acho que também acaba sendo muito bom para a gente utilizar aqui. O Prometheus vai coletar ali as métricas de volume de dados que estão sendo transmitidos. O Grafana, você vai conseguir usar isso em tempo real ali e você consegue configurar ali os alertas para notificar caso exceda a capacidade de rede, por exemplo, ou alguma coisa nesse sentido. E o resultado que você vai ter é que você vai garantir que você está sempre ali com a qualidade de vídeo sem interrupção, porque você está conseguindo enxergar o volume de dados que está sendo utilizado e transmitido. Agora vamos falar só de mais dois, agora que a gente tem aqui pela frente, que é o esquema, vamos passar rapidinho só para ficar na cabeça de vocês de novo, só lembrando que quando a gente está falando dessas estruturas de dados que eu estou passando para vocês é uma visão nova, uma visão razoavelmente nova e uma visão que não vai ter em todos os livros, em todas as informações que vocês buscarem de observabilidade, mas que eu acho que é extremamente importante, ainda mais porque a gente está cada vez mais sendo orientado a dados, consumindo mais dados e quando a gente vai olhando para frente, eu acho que cada vez mais isso vai pegar para quem estiver aí engenheirando no dia a dia. Então a gente precisa pensar bastante nisso, tá bom? Então aqui, o próximo cara que eu queria falar com vocês é o esquema. É sobre a organização e estrutura dos dados, tá? O esquema ele vai ter ali a garantia que os dados continuam uniformes ao longo de toda a sua utilização, evitando que vai ter algum tipo de erro de leitura incorreta. Ou seja, mais do que passar o dado certo, eu preciso ter um esquema de organização daquele dado que não esteja quebrado, tá bom? Então aqui o esquema de dados ali, ele vai garantir a integridade, tá? Então é um esquema bem definido, ele garante que os dados eles vão estar com uma estrutura consistente, vai evitar erro de leitura, erro de inconsistência ali no na leitura dos dados ele vai facilitar as integrações, então os dados que são estruturados de maneira constante, ele vai ter uma integração mais fácil entre várias aplicações. E ele tem as validações de dados, que tem um esquema que permite a validação automática dos dados, garantindo que eles estejam completos e no formato esperado, que é o principal. Aqui a gente está falando de formato. Para monitorar os esquemas de dados a gente tem alguns jeitos aqui então tem uma validação de esquema que você pode fazer verificando se os dados estão seguindo o esquema definido você pode usar algumas ferramentas de validação ou seja, tem um esquema, você vai bater se os dados estão sendo gerados eles estão dentro do esquema pensado quando você tem uma mudança de esquema é legal você detectar e alertar sobre essa mudança para você saber se não vai ter nenhum impacto nos dados para frente. Então, você conseguir se preparar para isso. E auditoria de esquema de tempos em tempos. Você precisa ter ali o registro das alterações que estão acontecendo. Na verdade, o tempo todo o registro das alterações. E você precisa ter auditorias de conformidade dentro desses esquemas para garantir que toda a informação pela frente está seguindo um caminho ideal. Outro cara rapidinho para a gente falar é a linha de dados. Quando a gente está falando de linha de dados, a gente está falando sobre a rastreabilidade desses dados, que a gente consegue saber qual é a origem e qual o destino deles, ou seja, todo o passo por onde eles passaram. Então, são as migalhas dos dados de por onde eles foram passando, para você saber quais foram as mudanças e assim por diante ao longo do caminho, caso tenha acontecido. Vocês viram como é muito diferente? A gente fala muito de aplicação normalmente e eu quis trazer para vocês uma visão de dados também para a gente se preparar, tá bom? Então, qual que é a importância? Quando a gente está falando da linha de dados, você pode ter uma rastreabilidade ali para você saber quais foram todas as transformações que aquele dado sofreu até o final da sua cadeia, e daí com isso você consegue entender como que ele chegou ao destino final do jeito que chegou. Você consegue garantir conformidade, então você consegue garantir que os dados estão em conformidade com o regulamento, política e assim por diante. Vou dar um exemplo de um dado que ele acaba sofrendo muita mudança ao longo de um percurso da vida útil dentro de uma instituição grande, dados contábeis ou financeiros. Eles têm muita alteração, porque eles estão sendo complementados normalmente por vários sistemas, você tem que ter valor, você tem que ter qualquer quebra daquele valor, você tem que ter qualquer cosife que ele vai colocar aquele valor, conta contábil, conta transitória, uma porrada de coisa que você vai agregando de informação ao longo do tempo. E se você não tiver conformidade, no final do dia, não importa. Você vai acabar gerando relatórios errados, vai contabilizar errado, que vai ser um grande problema para a sua organização. Então aqui é importante você ter como garantir que os dados estão em conformidade. Você consegue fazer o diagnóstico de problemas, então vai ficar mais fácil de você achar um problema, caso tenha, e quando tiver um problema, você vai ver onde foi transformado aquele dado até chegar onde chegou, fica mais fácil. E você consegue confiar mais nos dados, porque tem tudo isso que eu acabei de falar para vocês, e vai permitir que você consiga verificar as coisas no dia a dia. Um jeito aqui de monitorar, e aqui é um jeito um pouco mais manual, é a documentação das linhas de dados, consegue registrar todas as transformações, os movimentos que você está tendo ali entre os sistemas. Você consegue ter ferramentas de data lineage, que você vai usar ali para rastrear e visualizar as linhas que foram alteradas automaticamente, e você consegue fazer auditoria também, para você conseguir olhar ali as linhas de dados de tempos em tempos. Aqui eu coloquei um caso para a gente olhar junto, só porque é um caso bem diferente, normalmente a gente não olha isso, não sei se vocês, mas são áreas menores que olham isso no dia a dia, eu já passei por isso, então achei interessante trazer para vocês. Então, imagina lá uma instituição financeira, ela precisa garantir conformidade com alguns reguladores. Então, por exemplo, um banco, ele precisa estar garantindo sua regularidade com o BACEN, e para isso você precisa garantir a conformidade de dados. Então, você vai ter ali um sistema de monitoramento de linhas de dados para garantir a conformidade e facilitar auditorias. Tem uma ferramenta que é a Colibra, que ela acaba ajudando bastante nisso. Então é interessante vocês darem uma olhada depois caso alguém precise fazer esse tipo de trampo. Então é uma ferramenta interessante. Ela captura automaticamente as linhas de dados de todas as transações financeiras. Você consegue fazer auditorias regulares para verificar se está tudo ok, e tem as indicações gráficas ali que elas vão ajudar vocês a identificar caso tenha algum problema, tá bom? O resultado é que você vai garantir ali que os regulamentos estão sendo atendidos, eles estão em conformidade, e com isso você consegue não ter nenhum problema, e você também consegue garantir ali a facilidade quando chegar um auditor para olhar para isso, que normalmente vai ter. Então, basicamente, são esses casos que eu quis trazer para vocês. Fui um pouco mais profundo nos pilares, coloquei pilares adicionais, ainda mais quando a gente está falando de orientação a dados, porque eu acho que são relevantes para o futuro. Como eu falei, nas próximas aulas o Jacques vai trazer ainda uma outra visão para vocês com mais três pilares que são super importantes. Então, os três primeiros que eu falei, guardem eles. Tem mais esses pilares que são mais orientados a dados que eu trouxe para vocês. Deixem eles aqui para vocês terem na cabeça como algo didático, caso vocês precisem algum dia. E fiquem lá com o Jacques com os outros adicionais que ele vai pôr, que eu acho super interessante também. Beleza? Valeu, até