Home avatar

Roberta Brandão

Observabilidade com Fluentd e Data Prepper usando Entropia de Shannon

No artigo sobre Observabilidade no Kubernetes, mostrei como instrumentar um cluster com Prometheus, Grafana e Jaeger. Mas e quando o volume de logs e traces cresce a ponto de voce nao conseguir mais identificar o que e normal e o que e anomalia so de olhar um dashboard?

E aqui que a entropia de Shannon entra como ferramenta de deteccao, e onde o OpenSearch com Fluentd e Data Prepper entra como infraestrutura para processar tudo em escala.

A ideia e simples: calcular a entropia de campos especificos dos seus logs e traces. Se a entropia mudar bruscamente, algo esta diferente. Isso pode ser um ataque, um bug, ou uma mudanca de comportamento que voce precisaria saber.

Entropia de Shanon no dia a dia do Dev

Em 1948, Claude Shannon publicou um artigo chamado “A Mathematical Theory of Communication” que fundou a Teoria da Informacao. Dentre varias coisas, ele definiu uma formula que mede a incerteza de uma fonte de dados. Essa formula ficou conhecida como Entropia de Shannon, e embora tenha nascido no contexto de telecomunicacoes, ela aparece em mais places do que voce imagina no dia a dia de quem trabalha com tecnologia.

A formula e esta:

$$ H(X) = -\sum p(x) \log_2 p(x) $$

Onde:

  • p(x) e a probabilidade de cada simbolo aparecer na fonte.
  • O resultado e medido em bits.

Quanto mais imprevisivel a fonte, maior a entropia. Quanto mais repetitiva, menor.

Vamos percorrer situacoes reais onde esse conceito aparece, sem precisar de um PhD em matematica para entender.

Como comparei duas linguagens concorrentes para um projeto?

No último projeto pessoal, simulei o core de um sistema de pagamento. Pra isso, comecei a estudar qual linguagem seria importante para tratar o volume de transação e ainda garantir alguns guardrails para o ambiente. Entre as demais linguagens, meu benchmark decidi entre Golang e Elixir, por gosto pessoal e no fim escolhi o Elixir.

Go é poderoso, mas não fornece isolamento forte por design. Ele opta por eficiência e simplicidade, mas exige que o programador gerencie a concorrência de forma cuidadosa.Já Elixir /Erlang garante isso por construção: processos isolados e comunicação via mensagem tornam concorrência mais segura e previsível.

Debugando um app Elixir

O IEx é um verdadeiro “canivete suíço” para debugar aplicações Elixir. Com ele, você tem acesso direto ao estado da aplicação, pode inspecionar conexões, analisar consumo de memória e acompanhar a troca de mensagens entre processos. Em sistemas distribuídos e altamente concorrentes, essas ferramentas são essenciais para garantir observabididade e rapidez na resolução de problemas.

Neste artigo, vamos explorar como usar o IEx para:

  1. Checar conexões com o banco de dados.
  2. Fazer consultas de uso de memória.
  3. Acompanhar mensagens e processos internos do Elixir (mensageria).
  4. Usar o IEx remoto com checklist.

Para debugar uma aplicação Elixir, você deve rodar sua aplicação no modo interativo:

Implementando Armazenamento de Vetores para IA na Magalu Cloud

Este relatório foi desenvolvido em uma prova de conceito e o projeto foi inspirado no produto de S3 Vectors da AWS¹. Caso encontre algum erro técnico, gramatical ou de concordância, me avise.

A inteligência artificial (IA) generativa está transformando a maneira como as empresas interagem com dados e clientes. No cerne dessa transformação, encontram-se os vetores e os modelos de embedding, que permitem que sistemas de IA compreendam e processem informações não estruturadas de maneira semântica. Vetores são representações numéricas densas de dados como texto, imagens, áudio e vídeo, criadas por modelos de embedding que capturam o significado e a estrutura subjacente.1 A busca vetorial, uma técnica emergente, utiliza essas representações para encontrar pontos de dados semanticamente semelhantes, comparando suas distâncias ou similaridades.1 Essa capacidade é fundamental para diversas aplicações de IA.

Como implementei meu blog com Ghost

E este exemplo pode ajudar a colocar teu app na web.

Mas antes de tudo, gostaria de contar porquê eu mudei do gerador de sites estáticos Hugo, para um CMS (Content Management System).

Desde 2018, o gerador de sites com Jekyll e Hugo funcionavam bastante pra mim com GitHub Pages. O processo de publicação também me atendia bastante e o custo é praticamente zero se você não quiser ter um domínio .com ou .com.br, e rodava numa boa usando Git e uma Pipeline para atualizar a página estática e funcionava muito bem, pois não preciso gerenciar nenhuma infra-estrutura, só precisava garantir que o CI-CD do GitHub Actions estava funcionando numa boa. A forma de publicar um artigo também é bem fácil pra mim, usando o fluxo do git. Boas razões para usar.