<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>DevOps - Tag - Roberta Brandão</title><link>https://betabrandao.github.io/tags/devops/</link><description>DevOps - Tag - 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>Sun, 27 Jul 2025 21:43:51 -0300</lastBuildDate><atom:link href="https://betabrandao.github.io/tags/devops/" rel="self" type="application/rss+xml"/><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>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><item><title>Containers e Docker: Desvendando a Virtualização de um app</title><link>https://betabrandao.github.io/posts/docker-na-pratica/</link><pubDate>Tue, 25 Feb 2025 18:02:18 -0300</pubDate><author><name>Roberta</name></author><guid>https://betabrandao.github.io/posts/docker-na-pratica/</guid><description><![CDATA[<h2 id="conceitos-básicos-de-como-começar-com-containers-na-prática" class="headerLink">
    <a href="#conceitos-b%c3%a1sicos-de-como-come%c3%a7ar-com-containers-na-pr%c3%a1tica" class="header-mark"></a>Conceitos básicos de como começar com containers na prática</h2><p>A virtualização de recursos é uma parte fundamental da moderna infraestrutura de TI. Nesse contexto, os containers têm desempenhado um papel crucial, oferecendo uma abordagem eficiente para empacotar e executar aplicativos com todas as suas dependências. Neste artigo, exploraremos os fundamentos de containers, Docker e LXC, revelando os conceitos por trás dessa tecnologia em constante evolução.</p>
<h2 id="virtualização-de-máquina-versus-contêinerização" class="headerLink">
    <a href="#virtualiza%c3%a7%c3%a3o-de-m%c3%a1quina-versus-cont%c3%aaineriza%c3%a7%c3%a3o" class="header-mark"></a>Virtualização de máquina versus Contêinerização</h2><p><figure><a class="lightgallery" href="/posts/docker-na-pratica/image.png" title="/posts/docker-na-pratica/image.png" data-thumbnail="/posts/docker-na-pratica/image.png">
        
    </a></figure></p>]]></description></item><item><title>Porque Padronizar Logs é tão valioso</title><link>https://betabrandao.github.io/posts/porque-padronizar-logs/</link><pubDate>Tue, 25 Feb 2025 16:44:50 -0300</pubDate><author><name>Roberta</name></author><guid>https://betabrandao.github.io/posts/porque-padronizar-logs/</guid><description><![CDATA[<p>Já um tempo queria escrever sobre logs, mas sentia um pouco de dificuldade de criar um boa razão para defender uma escrita coerente para o tema. Eis que encontrei: Dados!</p>
<p>Dados é considerado o novo petróleo e então precisamos conversar um pouco mais sobre ele.</p>
<h2 id="parte-1---log-como-json" class="headerLink">
    <a href="#parte-1---log-como-json" class="header-mark"></a>Parte 1 - Log como Json</h2><h3 id="conceito" class="headerLink">
    <a href="#conceito" class="header-mark"></a>Conceito</h3><p>Log é um termo inglês para definir um tronco ou bloco de madeira. E por analogia, o mesmo acontece com o bloco de informações que uma aplicação ou serviço pode acumular em um arquivo de texto linha por linha, ou seja, é basicamente é uma “pilha” de linhas de textos, que podem conter informações sobre como uma determinada aplicação ou serviço está sendo executada, ou pode registrar um possível erro do serviço ou em alguma regra de negócio.</p>]]></description></item></channel></rss>