Estação de trabalho às 2h da manhã com monitor inundado por logs verdes e vermelhos, luminária acesa e celular brilhando com um alerta

Logs em produção: o custo invisível do ruído

Mais um capítulo da série GenServer the “rabbit hole”. Dessa vez sem GenServer — só log mesmo. Mas o mesmo princípio: a abstração parece simples, e quase ninguém percebe que está usando errado até a conta chegar. Imagina o cenário: 2h da manhã, um pod reiniciou e o alerta acordou alguém. A pessoa abre o Loki, filtra pela label do app, e a primeira tela do navegador é isso aqui: ...

21 de maio de 2026 · 21 min · Daniel Lima
Árvore de supervisão na tela com um nó vermelho no topo descendo em cascata, coelho de cerâmica tombado sobre a mesa

GenServer the "rabbit hole" — Parte 2: A cascata silenciosa

Continuação de GenServer the “rabbit hole”. Se você ainda não leu, recomendo passar por lá antes — vamos partir do mesmo projeto genserver_study e dos mesmos conceitos de mailbox, supervisor e max_restarts. No artigo anterior nós exploramos como um GenServer “mal comportado” pode encerrar toda a árvore de supervisão quando estoura o max_restarts do supervisor. Mostramos como mensagens são perdidas no mailbox e como o “Let it crash” não é exatamente um cheque em branco para deixar processos quebrarem aleatoriamente. ...

16 de maio de 2026 · 14 min · Daniel Lima
Mesa noturna iluminada por um terminal roxo rodando iex, com um coelho de cerâmica ao lado do teclado

GenServer — the "rabbit hole"

Quando exploramos os pontos fortes do Elixir como linguagem de programação, dois se destacam em frente a outras linguagens do mercado: 🚀 3. Concurrency and Scalability Uses actors (processes) for concurrency (each with its own memory and message queue). Millions of processes can run concurrently with low overhead. Built-in tools for distribution across multiple nodes. 🛠 4. Fault-Tolerance and Supervision Trees “Let it crash” philosophy: Failures are expected and isolated. Supervision trees: Automatically restart failing processes, making systems self-healing and resilient. GenServer é uma abstração sobre o modelo de processos da VM do Erlang que é entregue pelo core da linguagem e se conecta diretamente aos pontos de Concorrência e Árvore de Supervisão do Elixir. Por ser um pilar comum na arquitetura de sistemas construídos em Elixir, e por ser abordado “prematuramente” nas documentações oficiais (Client server communication, OTP Concurrency), é comum que programadores recém-chegados comecem a modelar suas primeiras soluções em Elixir com o uso da abstração fornecida pelo módulo GenServer. Demora um pouco até a doc oficial fazer o primeiro disclaimer para os novos desavisados: When (not) to use a GenServer. ...

19 de julho de 2025 · 15 min · Daniel Lima