<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>All Posts - Roberta Brandão</title><link>https://betabrandao.github.io/posts/</link><description>All Posts | Roberta Brandão</description><generator>Hugo -- gohugo.io</generator><language>pt</language><managingEditor>robertanrbandao[at]gmail[dot]com (Roberta Brandão)</managingEditor><webMaster>robertanrbandao[at]gmail[dot]com (Roberta Brandão)</webMaster><lastBuildDate>Thu, 07 Aug 2025 17:07:30 -0300</lastBuildDate><atom:link href="https://betabrandao.github.io/posts/" rel="self" type="application/rss+xml"/><item><title>Como comparei duas linguagens concorrentes para um projeto?</title><link>https://betabrandao.github.io/posts/como-comparei-duas-linguagens-concorrentes-para-um-projeto/</link><pubDate>Thu, 07 Aug 2025 17:07:30 -0300</pubDate><author><name>Roberta</name></author><guid>https://betabrandao.github.io/posts/como-comparei-duas-linguagens-concorrentes-para-um-projeto/</guid><description><![CDATA[<p>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 <strong>Golang</strong> e <strong>Elixir,</strong> por gosto pessoal e no fim escolhi o <strong>Elixir</strong>.</p>
<p>Go é poderoso, mas não fornece isolamento forte por <strong>design</strong>. Ele opta por eficiência e simplicidade, mas exige que o programador gerencie a concorrência de forma cuidadosa.Já <strong>Elixir</strong> /<strong>Erlang</strong> garante isso por construção: <strong>processos isolados</strong> e <strong>comunicação via mensagem</strong> tornam concorrência mais segura e previsível.</p>]]></description></item><item><title>Debugando um app Elixir</title><link>https://betabrandao.github.io/posts/debugando-um-app-elixir/</link><pubDate>Mon, 04 Aug 2025 11:35:21 -0300</pubDate><author><name>Roberta</name></author><guid>https://betabrandao.github.io/posts/debugando-um-app-elixir/</guid><description><![CDATA[<p>O IEx é um verdadeiro &ldquo;canivete suíço&rdquo; 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.</p>
<p>Neste artigo, vamos explorar como usar o IEx para:</p>
<ol>
<li>Checar conexões com o banco de dados.</li>
<li>Fazer consultas de uso de memória.</li>
<li>Acompanhar mensagens e processos internos do Elixir (mensageria).</li>
<li>Usar o IEx remoto com checklist.</li>
</ol>
<h2 id="iniciando-o-iex-com-sua-aplicação-iex--s-mix" class="headerLink">
    <a href="#iniciando-o-iex-com-sua-aplica%c3%a7%c3%a3o-iex--s-mix" class="header-mark"></a>Iniciando o IEx com sua Aplicação (IEx -S Mix)</h2><p>Para debugar uma aplicação Elixir, você deve rodar sua aplicação no modo interativo:</p>]]></description></item><item><title>Implementando Armazenamento de Vetores para IA na Magalu Cloud</title><link>https://betabrandao.github.io/posts/implementando-armazenamento-de-vetores-para-ia-na-magalu-cloud/</link><pubDate>Sun, 27 Jul 2025 21:43:51 -0300</pubDate><author><name>Roberta</name></author><guid>https://betabrandao.github.io/posts/implementando-armazenamento-de-vetores-para-ia-na-magalu-cloud/</guid><description><![CDATA[<p>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.</p>
<h2 id="introdução-a-importância-do-armazenamento-de-vetores-para-ia-moderna" class="headerLink">
    <a href="#introdu%c3%a7%c3%a3o-a-import%c3%a2ncia-do-armazenamento-de-vetores-para-ia-moderna" class="header-mark"></a><strong>Introdução: A Importância do Armazenamento de Vetores para IA Moderna</strong></h2><p>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.</p>]]></description></item><item><title>Como implementei meu blog com Ghost</title><link>https://betabrandao.github.io/posts/como-implementei-meu-blog-com-ghost/</link><pubDate>Sat, 05 Apr 2025 22:59:37 -0300</pubDate><author><name>Roberta</name></author><guid>https://betabrandao.github.io/posts/como-implementei-meu-blog-com-ghost/</guid><description><![CDATA[<p>E este exemplo pode ajudar a colocar teu app na web.</p>
<p>Mas antes de tudo, gostaria de contar porquê eu mudei do gerador de sites estáticos Hugo, para um CMS (Content Management System).</p>
<p>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. <a href="https://github.com/betabrandao/betabrandao.github.io?ref=blog.robertabrandao.com.br" target="_blank" rel="noopener noreferrer">Boas razões para usar</a>.</p>]]></description></item><item><title>Observabilidade no Kubernetes</title><link>https://betabrandao.github.io/posts/observabilidade-no-kubernetes/</link><pubDate>Thu, 20 Mar 2025 17:44:32 -0300</pubDate><author><name>Roberta</name></author><guid>https://betabrandao.github.io/posts/observabilidade-no-kubernetes/</guid><description><![CDATA[<p>Como instrumentar uma infraestrutura em MicroK8s para coleta de métricas e traces de aplicações com Grafana</p>
<p>O Kubernetes tornou-se uma plataforma essencial para orquestração de contêineres, e o MicroK8s é uma solução leve e fácil de usar para quem deseja rodar Kubernetes localmente ou em ambientes de desenvolvimento. No entanto, à medida que suas aplicações crescem em complexidade, a necessidade de monitoramento e observabilidade torna-se crítica.</p>
<p>Vale ressaltar que Kubernetes e a observabilidade são componentes essenciais para a gestão de aplicações modernas em ambientes de nuvem, mas sua implementação pode levar a um aumento significativo nos custos se não forem gerenciados de forma eficiente. Por exemplo, o Kubernetes pode escalar automaticamente os recursos com base na demanda, o que é ótimo para garantir a disponibilidade da aplicação, mas também pode resultar em custos imprevistos. Um cluster Kubernetes que escala horizontalmente (HPA - Horizontal Pod Autoscaler) pode criar múltiplas réplicas de pods durante picos de tráfego, consumindo mais recursos de CPU, memória e armazenamento. Se esses recursos não forem otimizados ou se o dimensionamento automático for configurado de forma agressiva, a infraestrutura pode acabar utilizando mais instâncias de nuvem do que o necessário, elevando a fatura mensal.</p>]]></description></item><item><title>Fundamentos do Sistema Linux</title><link>https://betabrandao.github.io/posts/fundamentos-do-sistema-linux/</link><pubDate>Thu, 13 Mar 2025 10:35:56 -0300</pubDate><author><name>Roberta</name></author><guid>https://betabrandao.github.io/posts/fundamentos-do-sistema-linux/</guid><description><![CDATA[<p>Seguimos com um procedimento sobre a base do linux, com explicações diretas sobre comandos essenciais na administração do Linux. Para uma introdução mais histórica, sugiro acessar os links do <strong>tópico 1</strong> do artigo de <a href="https://blog.robertabrandao.com.br/aprendizagem-linux/" target="_blank" rel="noopener noreferrer">Curadoria de Aprendizagem Linux</a></p>
<p>No Linux, tudo é representado como um arquivo ou diretório. A estrutura segue o padrão Filesystem Hierarchy Standard (FHS):</p>
<h3 id="diretórios-principais" class="headerLink">
    <a href="#diret%c3%b3rios-principais" class="header-mark"></a>Diretórios Principais:</h3><table>
  <thead>
      <tr>
          <th style="text-align: left">Diretório</th>
          <th style="text-align: left">Descrição</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td style="text-align: left"><code>/</code></td>
          <td style="text-align: left">Raiz do sistema de arquivos, tudo começa aqui.</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>/bin</code></td>
          <td style="text-align: left">Binários essenciais (comandos básicos, ex: <code>ls</code>, <code>cp</code>).</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>/sbin</code></td>
          <td style="text-align: left">Binários administrativos (ex: <code>fdisk</code>, <code>shutdown</code>).</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>/home</code></td>
          <td style="text-align: left">Diretórios dos usuários (<code>/home/usuario</code>).</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>/root</code></td>
          <td style="text-align: left">Diretório do superusuário <code>root</code>.</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>/etc</code></td>
          <td style="text-align: left">Arquivos de configuração do sistema.</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>/var</code></td>
          <td style="text-align: left">Dados variáveis (logs, filas de impressão, cache).</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>/tmp</code></td>
          <td style="text-align: left">Arquivos temporários (limpos após reinicialização).</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>/usr</code></td>
          <td style="text-align: left">Aplicações e bibliotecas não essenciais.</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>/opt</code></td>
          <td style="text-align: left">Aplicações opcionais instaladas manualmente.</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>/dev</code></td>
          <td style="text-align: left">Arquivos de dispositivos (ex: <code>/dev/sda</code> para discos).</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>/proc</code></td>
          <td style="text-align: left">Informações do sistema e processos em tempo real.</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>/sys</code></td>
          <td style="text-align: left">Informações sobre hardware e kernel.</td>
      </tr>
      <tr>
          <td style="text-align: left"><code>/mnt</code> e <code>/media</code></td>
          <td style="text-align: left">Pontos de montagem para dispositivos externos.</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="comandos-básicos-do-linux" class="headerLink">
    <a href="#comandos-b%c3%a1sicos-do-linux" class="header-mark"></a>Comandos Básicos do Linux</h2><h3 id="1-navegação-no-sistema-de-arquivos" class="headerLink">
    <a href="#1-navega%c3%a7%c3%a3o-no-sistema-de-arquivos" class="header-mark"></a>1. Navegação no Sistema de Arquivos</h3><pre><code>pwd        # Mostra o diretório atual
ls         # Lista arquivos e diretórios
ls -l      # Lista detalhada
ls -a      # Inclui arquivos ocultos
cd /etc    # Acessa o diretório /etc
cd ~       # Volta para o diretório do usuário
cd ..      # Volta um nível
cd -       # Alterna para o diretório anterior
</code></pre>
<h3 id="2-manipulação-de-arquivos-e-diretórios" class="headerLink">
    <a href="#2-manipula%c3%a7%c3%a3o-de-arquivos-e-diret%c3%b3rios" class="header-mark"></a>2. Manipulação de Arquivos e Diretórios</h3><pre><code>mkdir novo_dir    # Cria um diretório
rmdir vazio       # Remove um diretório vazio
rm arquivo.txt    # Remove um arquivo
rm -rf pasta/     # Remove uma pasta e seu conteúdo
cp origem destino # Copia um arquivo ou diretório
mv origem destino # Move ou renomeia arquivos/diretórios
touch novo.txt    # Cria um arquivo vazio
</code></pre>
<h3 id="3-exibição-e-busca-de-arquivos" class="headerLink">
    <a href="#3-exibi%c3%a7%c3%a3o-e-busca-de-arquivos" class="header-mark"></a>3. Exibição e Busca de Arquivos</h3><pre><code>cat arquivo.txt   # Exibe o conteúdo do arquivo
less arquivo.txt  # Permite rolar pelo arquivo
head arquivo.txt  # Mostra as primeiras 10 linhas
tail arquivo.txt  # Mostra as últimas 10 linhas
find /home -name &quot;*.txt&quot;  # Busca arquivos por nome
grep &quot;erro&quot; log.txt       # Procura a palavra &quot;erro&quot; em um arquivo
</code></pre>
<h3 id="4-permissões-e-propriedades-de-arquivos" class="headerLink">
    <a href="#4-permiss%c3%b5es-e-propriedades-de-arquivos" class="header-mark"></a>4. Permissões e Propriedades de Arquivos</h3><pre><code>ls -l arquivo.txt  # Exibe permissões do arquivo
chmod 755 script.sh  # Modifica permissões (rwxr-xr-x)
chown user:grupo arquivo.txt  # Muda dono do arquivo
</code></pre>
<h3 id="5-processos-e-sistema" class="headerLink">
    <a href="#5-processos-e-sistema" class="header-mark"></a>5. Processos e Sistema</h3><pre><code>ps aux      # Lista processos em execução
top         # Exibe processos ativos em tempo real
kill PID    # Mata um processo pelo ID
df -h       # Mostra espaço em disco
du -sh pasta/  # Mostra tamanho de uma pasta
uptime      # Mostra tempo ligado do sistema
</code></pre>
<h3 id="6-gerenciamento-de-pacotes" class="headerLink">
    <a href="#6-gerenciamento-de-pacotes" class="header-mark"></a>6. Gerenciamento de Pacotes</h3><p><strong>Arch Linux (Pacman)</strong></p>]]></description></item><item><title>Guia Rápido para Iniciar com MicroK8s</title><link>https://betabrandao.github.io/posts/guia-rapido-microk8s/</link><pubDate>Sat, 08 Mar 2025 20:22:31 -0300</pubDate><author><name>Roberta</name></author><guid>https://betabrandao.github.io/posts/guia-rapido-microk8s/</guid><description><![CDATA[<p>Guia simples e prático de como iniciar no mundo do Kubernetes com MicroK8s.</p>
<h2 id="1-o-que-é-o-microk8s" class="headerLink">
    <a href="#1-o-que-%c3%a9-o-microk8s" class="header-mark"></a><strong>1. O que é o MicroK8s?</strong></h2><p>O <strong>MicroK8s</strong> é uma distribuição leve e otimizada do <strong>Kubernetes</strong> , projetada para facilitar o desenvolvimento local, testes e até mesmo ambientes de produção em dispositivos pequenos, como o Raspberry Pi.</p>
<p>Ele é interessante porque:</p>
<ul>
<li>É <strong>fácil de instalar</strong> e roda como um único snap.</li>
<li>Consome <strong>menos recursos</strong> do que um cluster Kubernetes completo.</li>
<li>Tem suporte nativo a <strong>add-ons</strong> úteis como Istio, MetalLB, DNS e outros.</li>
</ul>
<hr>
<h2 id="2-instalando-o-microk8s" class="headerLink">
    <a href="#2-instalando-o-microk8s" class="header-mark"></a><strong>2. Instalando o MicroK8s</strong></h2><p>O MicroK8s é distribuído via <strong>Snap</strong> , então basta rodar:</p>]]></description></item><item><title>Problemas de recursos em PODs no Kubernetes</title><link>https://betabrandao.github.io/posts/problemas-de-recursos-kubernetes/</link><pubDate>Sun, 02 Mar 2025 21:16:36 -0300</pubDate><author><name>Roberta</name></author><guid>https://betabrandao.github.io/posts/problemas-de-recursos-kubernetes/</guid><description><![CDATA[<p>Me perguntaram bastante sobre como exemplificar a configuração incorreta de requests e limits de CPU e memória, resultando falhas em pods sendo OOMKilled ou throttled sem explicação aparente. Vamos para algumas definições bem práticas sem enrolação:</p>
<p>- <strong>OOMKilled (Out of Memory Killed)</strong> : Ocorre quando um pod consome mais memória do que o limite definido. O Kubernetes força a finalização do container para liberar memória, podendo gerar downtime e impactar a aplicação.</p>]]></description></item><item><title>Redes no Kubernetes com Base no Tanenbaum</title><link>https://betabrandao.github.io/posts/redes-no-kubernetes/</link><pubDate>Sun, 02 Mar 2025 20:58:24 -0300</pubDate><author><name>Roberta</name></author><guid>https://betabrandao.github.io/posts/redes-no-kubernetes/</guid><description><![CDATA[<p>Um guia bem prático de como começar a estudar Kubernetes baseado no livro de redes do Tanenbaum</p>
<h3 id="1-fundamentos-de-redes-e-como-isso-impacta-o-k8s" class="headerLink">
    <a href="#1-fundamentos-de-redes-e-como-isso-impacta-o-k8s" class="header-mark"></a>1. Fundamentos de Redes e Como Isso Impacta o K8s</h3><p><strong>Tanenbaum</strong> : Capítulos sobre <strong>Camadas de Rede e Modelo OSI/TCP-IP<br>
No Kubernetes</strong>: Entenda como <strong>pods, nodes e serviços</strong> interagem via redes virtuais.<br>
<strong>O que estudar?</strong></p>
<ul>
<li>Comunicação entre pods e nodes (CNI – Container Network Interface)</li>
<li>Namespace de rede e isolamento no Linux</li>
<li>Como o tráfego de rede é roteado dentro do cluster</li>
</ul>
<p><strong>Mão na Massa</strong></p>]]></description></item><item><title>Curadoria de Aprendizagem Linux</title><link>https://betabrandao.github.io/posts/aprendizagem-linux/</link><pubDate>Sun, 02 Mar 2025 20:30:40 -0300</pubDate><author><name>Roberta</name></author><guid>https://betabrandao.github.io/posts/aprendizagem-linux/</guid><description><![CDATA[<p>Este é um guia inicial para quem deseja começar a estudar Linux.</p>
<p>E pra quem está começando no mundo de DevOps e Infra de datacenter, conhecimento e prática são primordiais. Mas não se assuste com o volume de conteúdo, pois este é um guia de estudos.</p>
<p>🐧</p>
<p><strong><strong>Dica de Ouro</strong></strong> : Recomendo o site do <a href="https://guiafoca.org/guiaonline/?ref=blog.robertabrandao.com.br" target="_blank" rel="noopener noreferrer">Guia Foca</a>, que possui materiais separados por níveis iniciante, intermediário e avançado, em texto ou PDF para download. É meu guia no linux desde sempre.</p>]]></description></item></channel></rss>