<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Thiago Sagara</title>
    <description>The latest articles on DEV Community by Thiago Sagara (@thiagosagara).</description>
    <link>https://dev.to/thiagosagara</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3388076%2F5a792f50-1078-49a4-b3ae-1c1c0f54cd91.jpg</url>
      <title>DEV Community: Thiago Sagara</title>
      <link>https://dev.to/thiagosagara</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thiagosagara"/>
    <language>en</language>
    <item>
      <title>Amazon Athena: análises SQL diretas no S3 – quando usar, quanto custa e quais os limites</title>
      <dc:creator>Thiago Sagara</dc:creator>
      <pubDate>Fri, 17 Oct 2025 14:59:44 +0000</pubDate>
      <link>https://dev.to/thiagosagara/amazon-athena-analises-sql-diretas-no-s3-quando-usar-quanto-custa-e-quais-os-limites-4lie</link>
      <guid>https://dev.to/thiagosagara/amazon-athena-analises-sql-diretas-no-s3-quando-usar-quanto-custa-e-quais-os-limites-4lie</guid>
      <description>&lt;p&gt;Quando começei a trabalhar com AWS em &lt;strong&gt;2021&lt;/strong&gt;, nos meus estudos para a CCP via o &lt;strong&gt;S3 **como um Google Drive com **capacidade infinita&lt;/strong&gt; (obviamente tinha uma visão beemm limitada de um cara que vinha de &lt;em&gt;router bgp em Cisco&lt;/em&gt;). Contudo tenho notado que nos últimos anos, o S3 se consolidou como a &lt;strong&gt;espinha dorsal&lt;/strong&gt; dos Data Lakes modernos na AWS, com cada vez mais funções e inovações.&lt;/p&gt;

&lt;p&gt;Praticamente &lt;strong&gt;todo projeto de dados&lt;/strong&gt; na AWS começa por lá: armazenando logs, relatórios financeiros, eventos de aplicações ou mesmo datasets públicos. Na prática ele deixou de ser um &lt;strong&gt;repositório passivo e virou o ponto de partida da inteligência de dados na nuvem.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O desafio agora não é mais guardar dados, e sim &lt;strong&gt;extrair valor deles sem clusters caros ou ETLs pesados.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;É aí que entra o Amazon &lt;strong&gt;Athena&lt;/strong&gt;. Lançado em 2016, como um serviço serverless de consultas SQL sobre o S3. Com ele, você não provisiona servidores, não paga por nós ociosos e obviamente não precisa configurar instâncias: apenas descreve o schema (e por traz ele usa o &lt;strong&gt;Glue Data Catalog&lt;/strong&gt;) e consulta via SQL.&lt;/p&gt;

&lt;p&gt;Nesse blog post quero mostrar como o Athena faz as queries no S3, como podemos deixar essa queries mais baratas e mais rápidas, e também quando utilizar esse combo é uma vantagem.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy64yub5eesut6u6bp825.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy64yub5eesut6u6bp825.jpg" alt=" " width="344" height="357"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Cenário de estudo
&lt;/h2&gt;

&lt;p&gt;Vamos usar um caso prático: temos um arquivo CSV com dados de filmes do &lt;a href="https://basedosdados.org/dataset/6ba4745d-f131-4f8e-9e55-e8416199a6af?table=79de8c5e-9c21-4398-a9fb-bc40e6d6e77f" rel="noopener noreferrer"&gt;IMDb &lt;/a&gt; armazenado no S3  com cerca de 10 MB, contendo colunas como título, ano, gênero e avaliação.&lt;/p&gt;

&lt;p&gt;A ideia é analisar esses dados diretamente no S3 usando o Athena, sem precisar criar um banco de dados. Queremos responder perguntas como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Quais são os filmes mais bem avaliados por gênero?”&lt;/li&gt;
&lt;li&gt;“Quantos filmes foram lançados por década?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No começo, as consultas funcionam, mas são lentas e caras (o Athena precisa ler todo o CSV a cada execução). Então para resolver isso, aplicamos CTAS (Create Table As Select), convertendo o CSV para Parquet e criando partições por ano de lançamento, e assim reduzir tempo e custo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nosso objetivo&lt;/strong&gt;: comparar a diferença entre consultar o CSV bruto e a versão otimizada em Parquet, analisando tempo de execução, volume de dados escaneado e custo em dólar.&lt;/p&gt;
&lt;h2&gt;
  
  
  Arquitetura por trás do Athena
&lt;/h2&gt;

&lt;p&gt;Ok, o Athena além de ter um nome fanstástico foi algo totalmente revolucionário? A resposta direta: Não. Em resumo, ele funciona como a ponte entre o S3, onde os dados vivem, e as ferramentas que precisam deles.&lt;/p&gt;

&lt;p&gt;Junto com ele tem o todo poderoso &lt;strong&gt;AWS Glue Data Catalog:&lt;/strong&gt; que descreve o conteúdo, como se fose um mapa para o dataset (palavra bonita para o .csv), na prática ele é que vai dar significado ao .csv. &lt;/p&gt;

&lt;p&gt;Ai temos o &lt;strong&gt;Presto (motor interno (Trino)):&lt;/strong&gt; que é quem realmente executa as consultas em paralelo, lendo os arquivos diretamente do S3.&lt;/p&gt;

&lt;p&gt;Visualmente, a arquitetura pode ser imaginada assim: o S3 &lt;strong&gt;armazena os dados&lt;/strong&gt; (CSV, JSON, Parquet), o Glue Catalog &lt;strong&gt;descreve como esses dados estão estruturados&lt;/strong&gt;, o Athena (Presto) &lt;strong&gt;executa as queries em workers temporários&lt;/strong&gt;, e os resultados podem ser enviados para QuickSight, Redshift ou devolvidos ao S3.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkjto1ng7d3fcd5ds2ofm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkjto1ng7d3fcd5ds2ofm.png" alt=" " width="453" height="136"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Mão na massa: dataset do IMDb
&lt;/h2&gt;

&lt;p&gt;Para entender na prática como o Athena trabalha, vamos usar um dataset real: baixei a base de filmes do IMDb e subi em um bucket no S3, a base possui filmes com informações como título, ano de lançamento, nota e país.&lt;/p&gt;

&lt;p&gt;Nosso objetivo será analisar quantos filmes foram lançados por ano nas &lt;strong&gt;décadas de 1980 e 1990&lt;/strong&gt;, comparando a execução entre uma base CSV e uma versão otimizada em &lt;strong&gt;Parquet&lt;/strong&gt; com &lt;strong&gt;particionamento por ano&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Criando a tabela no Athena (CSV original no S3)
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE EXTERNAL TABLE IF NOT EXISTS imdb_movies (
    id STRING,
    title STRING,
    link STRING,
    year INT,
    duration STRING,
    rating_mpa STRING,
    rating_imdb STRING,
    vote STRING,
    budget STRING,
    gross_world_wide STRING,
    gross_us_canada STRING,
    gross_opening_weekend STRING,
    director STRING,
    writer STRING,
    star STRING,
    genre STRING,
    country_origin STRING,
    filming_location STRING,
    production_company STRING,
    language STRING,
    win STRING,
    nomination STRING,
    oscar STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
  'separatorChar' = ',',
  'quoteChar' = '"'
)
LOCATION 's3://datanews-user-event/input/' 
TBLPROPERTIES ('skip.header.line.count'='1');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Esse comando informa ao Athena:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Onde estão os dados (LOCATION);&lt;/li&gt;
&lt;li&gt;Que o formato é CSV (SERDE);&lt;/li&gt;
&lt;li&gt;E quais colunas existem no arquivo.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Consultando quantos filmes foram lançados por ano (anos 80 e 90)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Agora podemos fazer a primeira consulta, (aqui ainda sem sem otimização).&lt;br&gt;
Essa query irá contar quantos filmes existem por ano entre 1980 e 1999.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT year, COUNT(*) AS total_filmes
FROM movies_csv
WHERE year BETWEEN 1980 AND 1999
GROUP BY year
ORDER BY year;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft8itvnsc6uew8qr75d86.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft8itvnsc6uew8qr75d86.png" alt=" " width="800" height="148"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;💡 Aqui o Athena vai ler o CSV inteiro, mesmo que a maioria dos registros não esteja dentro do período desejado.&lt;/code&gt;&lt;br&gt;
Isso significa mais dados escaneados, mais tempo e mais custo.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Criando a tabela otimizada em Parquet com CTAS (filmes entre 80 e 90)
Para melhorar a performance, vamos criar uma nova tabela em formato Parquet e particionada por ano.
Usaremos o comando CTAS &lt;em&gt;(Create Table As Select)&lt;/em&gt;, que lê o dataset original, filtra os dados desejados e grava uma nova versão da tabela já otimizada no S3.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE imdb_movies_80_90
WITH (
    format = 'PARQUET',
    external_location = 's3://datanews-user-event/ctas/',
    partitioned_by = ARRAY['year'],
    parquet_compression = 'SNAPPY'
) AS
SELECT
    id,
    title,
    director,
    year
FROM
    movies_csv
WHERE year BETWEEN 1980 AND 1999
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O Athena criará automaticamente subpastas no S3 como:&lt;br&gt;
&lt;code&gt;s3://datanews-user-event/ctas/year=1980/&lt;br&gt;
s3://datanews-user-event/ctas/year=1981/&lt;br&gt;
...&lt;br&gt;
s3://datanews-user-event/ctas/year=1999/&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Cada partição conterá apenas os filmes daquele ano.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Consultando novamente a base otimizada
Agora, basta rodar a mesma query de antes, mas sobre a nova tabela particionada:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT year, COUNT(*) AS total_filmes
FROM imdb_movies_80_90
GROUP BY year
ORDER BY year;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbf8b4tpmqo157azuco4q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbf8b4tpmqo157azuco4q.png" alt=" " width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O Athena agora só &lt;strong&gt;lê as partições necessárias&lt;/strong&gt; (anos 80 e 90), em formato &lt;strong&gt;colunar e comprimido&lt;/strong&gt;, em vez de varrer o CSV inteiro.&lt;br&gt;
Isso pode &lt;strong&gt;reduzir&lt;/strong&gt; o volume escaneado &lt;strong&gt;em até 90%&lt;/strong&gt; e o tempo de execução em 3 a 5 vezes, dependendo do tamanho do dataset.&lt;/p&gt;

&lt;p&gt;Resultado? O mesmo conjunto de dados, mas agora com consultas até 90% mais baratas e 3x mais rápidas.&lt;br&gt;
O que muda não é o dado, é o formato e a forma como o Athena o lê.&lt;br&gt;
Esse é o ponto em que o S3 deixa de ser apenas armazenamento e &lt;strong&gt;passa a ser plataforma de análise.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparações com outras soluções
&lt;/h2&gt;

&lt;p&gt;Mas apenas o Athena consegue ler dados do S3? Não. Ele é muito &lt;strong&gt;bom para consultas ad-hoc&lt;/strong&gt; (imagine o ad-hoc como um uber, ou seja, você solicita só quando precisa) e &lt;strong&gt;analises sob demanda&lt;/strong&gt;, mas não é a escolha ideal para todos os cenários.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;Redshift Spectrum&lt;/strong&gt;, por exemplo, também consultas dados no S3, mas depende de um cluster RedShift ativo, e é mais indicado para quem usa um data warehouse e quer estender o alcance das consultas.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;Amazon EMR&lt;/strong&gt;, com Spark e Hive, é voltado a pipelines complexos e ETL massivos, também vai conseguir ler o S3, é mais fléxivel e muito mais poderoso, contudo exige uma manutenção e configuração mais pesada.&lt;/p&gt;

&lt;h2&gt;
  
  
  Custos e casos de uso
&lt;/h2&gt;

&lt;p&gt;O Athena te cobra &lt;strong&gt;$5 por terrabyte escaneado&lt;/strong&gt; proporcionalmente, ou seja, uma query que &lt;strong&gt;lê 1GB&lt;/strong&gt; custa aproximadamente &lt;strong&gt;$0,005&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Simplicidade sedutora, posso dizer, mas perigosa. &lt;br&gt;
Em números práticos, imagine um CloudTrail com 450GB de logs, que precisam ser analisados uma vez por semana:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CSV:&lt;/strong&gt; 450 GB lidos × $5/TB = ~$9 por execução&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parquet:&lt;/strong&gt; 110 GB lidos × $5/TB = ~$2.25&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essa diferença se repete toda semana, em um ano, são mais de $350 de economia só por mudar o formato.&lt;/p&gt;

&lt;p&gt;Então utilize o Athena para contextos onde precisa da informação rápida ou quer manter a infra totalmente serveless. Exemplos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;BI e dashboards:&lt;/strong&gt; junto com o QuickSight, gera relatórios em tempo real sem precisar mover dados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logs e auditoria:&lt;/strong&gt; usado por equipes de segurança/redes para consultar CloudTrail, VPC Flow Logs e ALB Logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Lakes serverless:&lt;/strong&gt; combinação de Glue + Athena + S3, criando um ecossistema de análise totalmente sem servidor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pontos importantes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cada query pode rodar no máximo por &lt;strong&gt;30 minutos;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Os resultados (download) é limitado em 100MB (maiores só mandar para o S3 e fazer o download por lá);&lt;/li&gt;
&lt;li&gt;Tem um &lt;em&gt;soft-limit&lt;/em&gt; de 20 queries simultâneas por conta/região;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;Bonus&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;quando NÃO utilizar o Athena:&lt;br&gt;
Quando não usar o Athena:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quando você precisa de &lt;strong&gt;queries complexas com muitos joins e aggregations;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quando os dados precisam de &lt;strong&gt;atualizações frequentes&lt;/strong&gt; (&lt;em&gt;Athena é leitura, não transação)&lt;/em&gt;;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ou quando o &lt;strong&gt;custo por leitura começa a se igualar ao de um Redshift&lt;/strong&gt; mantido ativo.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No fim, essa é a mentalidade por trás da nuvem moderna:&lt;br&gt;
trazer a análise para os dados, e não os dados para a análise.&lt;br&gt;
É o que faz o Athena ser tão poderoso — ele não é apenas uma ferramenta de consulta, mas um lembrete de que inteligência começa quando paramos de mover informação e começamos a escutá-la onde ela vive.&lt;/p&gt;

&lt;p&gt;revisado por: &lt;em&gt;Elisa Livramento&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>database</category>
      <category>aws</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Blockchain e o Futuro do Sistema Financeiro Brasileiro: entre o Drex, Smart Contracts e a Nuvem da AWS</title>
      <dc:creator>Thiago Sagara</dc:creator>
      <pubDate>Mon, 01 Sep 2025 20:07:28 +0000</pubDate>
      <link>https://dev.to/thiagosagara/blockchain-e-o-futuro-do-sistema-financeiro-brasileiro-entre-o-drex-smart-contracts-e-a-nuvem-da-1eng</link>
      <guid>https://dev.to/thiagosagara/blockchain-e-o-futuro-do-sistema-financeiro-brasileiro-entre-o-drex-smart-contracts-e-a-nuvem-da-1eng</guid>
      <description>&lt;p&gt;Já imaginou poder ter a mesma &lt;strong&gt;liquidez da poupança em um imóvel&lt;/strong&gt;, transferindo cotas digitais desse ativo com a mesma facilidade de enviar um pix? Esse é o tipo de transformação que o blockchain promete trazer ao mercado financeiro - e que o Bacen já está pavimentando com iniciativas como o &lt;strong&gt;Pix&lt;/strong&gt;, o &lt;strong&gt;Open Finance&lt;/strong&gt; e o &lt;strong&gt;DREX&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Não se trata apenas de inovação tecnológica, mas de uma mudança de paradigma: ativos, transações e contratos deixam de depender de sistemas centralizados para serem garantidos por uma rede distribuída, auditável e resistente a fraudes.&lt;/p&gt;

&lt;p&gt;Ai vocês me perguntam: Mas o que é esse tal de BlockChain? O que isso muda na minha vida? E qual o papel ou como a &lt;strong&gt;AWS **pode ajudar, seja com o **Amazon Managed Blockchain (AMB)&lt;/strong&gt; ou via nodes no EC2 ou EKS?&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é Blockchain? é de comer ou é de beber?
&lt;/h2&gt;

&lt;p&gt;O famoso e invisível Nakamoto descreveu o blockchain como &lt;em&gt;um sistema de registro baseado em consenso distribuído, eliminando a necessidade de uma "entidade de confiança" única&lt;/em&gt; [Nakamoto, S. (2008). bitcoin: A peer-to-peer electronic cash system&lt;/p&gt;

&lt;p&gt;Na prática, Blockchain é um nome bem bonitinho para um &lt;strong&gt;livro-caixa público e distribuído&lt;/strong&gt;, em que cada página representa um bloco de transações (&lt;strong&gt;Block&lt;/strong&gt;), e cada nova página só pode ser escrita se estiver matematicamente ligada à anterior (&lt;strong&gt;chain&lt;/strong&gt;) e for aprovada por um consenso. Essa estrutura torna as informações &lt;strong&gt;imutáveis **e **transparentes&lt;/strong&gt;, ou seja, uma vez registrada, a transação não pode ser alterada sem invalidar toda a sequência.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2fnoo7j88f4vmkdnwwbd.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2fnoo7j88f4vmkdnwwbd.gif" alt=" " width="400" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beleza, falei um monte de coisas 'técnicas', e talvez vocês não tenham entendido absolutamente nada. Então imagine o blockchain como um &lt;strong&gt;livro de atas&lt;/strong&gt; de uma assembléia de condomínio.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cada reunião é registrada na ordem em que aconteceu (&lt;strong&gt;bloco&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Todos os condôminos recebem uma cópia idêntica da ata (&lt;strong&gt;nós da rede&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Para aprovar uma nova página, todos precisam concordar com o que está escrito (&lt;strong&gt;consenso&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Se alguém tentar alterar uma página antiga, todos os outros percebem imediatamente, pois suas cópias não batem.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A diferença é que, no Blockchain, esse livro de atas não é guardado em um arquivo ou gaveta, ele é** distribuído digitalmente, protegido por criptografia** e com assinaturas que garantem a autenticidade de cada decisão.&lt;/p&gt;

&lt;p&gt;O detalhe técnico por trás da analogia é:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A 'página' é o &lt;strong&gt;bloco&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;O 'encadeamento' entre as páginas é feito por &lt;strong&gt;funções hash criptográficas.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;A 'assinatura de todos os condôminos' é o &lt;strong&gt;processo de consenso&lt;/strong&gt; (Proof of Work, Proof of Stake, Proof of Authority e etc);&lt;/li&gt;
&lt;li&gt;O 'livro inquebrável' é a &lt;strong&gt;garantia de imutabilidade&lt;/strong&gt; do Ledger.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Perceba que na prática o processo de consenso é a alma do blockchain.&lt;/p&gt;

&lt;h2&gt;
  
  
  E o que eu tenho a ver com isso?
&lt;/h2&gt;

&lt;p&gt;Despejei uma série de informações aqui, e talvez nesse momento você deve estar se perguntando: &lt;strong&gt;e o quiko?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Se pararem pra notar, as possibilidades de resoluções da tecnologia blockchain são bem interessantes, pois ela pode remodelar a forma como você interage com dinheiro, dados e até com o próprio Estado. Seus efeitos podem ser vistos tanto em facilidades quanto em novos desafios. Por exemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Inclusão financeira:&lt;/strong&gt; Em países em desenvolvimento, ou em guerra, onde milhões de pessoas não possuem conta bancária. O Blockchain permitiria criar carteiras digitais acessíveis apenas com um celular, ou mesmo 'decorando' uma sequência de 24 palavras. Reduzindo barreiras e entradas no sistema financeiro.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rastreamento em cadeias de suplementos:&lt;/strong&gt; Uma empresa conseguiria ter dados de uma matéria-prima desde os pequenos produtores até a chegada em sua fabrica. De fato a Nestle fez isso em 2020: &lt;a href="https://www.youtube.com/watch?v=0WBXkhgKpoE" rel="noopener noreferrer"&gt;Case Nestle BlockChain&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5dyldijra3rtwzd9utwc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5dyldijra3rtwzd9utwc.jpg" alt=" " width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tokenização de bens:&lt;/strong&gt; Imóveis, veículos e até obras de arte podem ser fracionadas digitalmente, permitindo que pessoas invistam em ativos a nivel de frações, permitindo que qualquer pessoa invista em ativos antes restritos a grandes investidores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maior confiança em serviços públicos:&lt;/strong&gt; Subsídios como auxílio gás ou o bolsa família poderiam ser vinculados a smart contracts, e pagos em redes blockchain, onde todos sabem exatamente para onde o dinheiro foi - e sem espaço para desvios no meio do caminho.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Isso tudo ainda gera economia para o Mercado Financeiro. De acordo com Dan Tapscott, aproximadamente 30% o custo de back-office bancário é gasto apenas conciliando informações entre instituições. [Tapscott, D., &amp;amp; Tapscott, A. (2016). Blockchain Revolution]&lt;/p&gt;

&lt;h2&gt;
  
  
  Mas e o BACEN, onde entra nisso?
&lt;/h2&gt;

&lt;p&gt;O Bacen não enxerga blockchain apenas como inovação experimental, mas como infraestrutura nacional estratégica e isso pode ser visto em dois produtos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pix (2020)&lt;/strong&gt;: Que apesar de não utilizar blockchain, prova a capacidade de criar sistemas em escala nacional com liquidação instantânea.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drex&lt;/strong&gt;: Que mesmo não sendo a nossa CBDC, ou seja, é o projeto para criação da moeda digital endógena brasileira, que servirá para:

&lt;ul&gt;
&lt;li&gt;Controle mais eficiente das reservas bancárias;&lt;/li&gt;
&lt;li&gt;Compra/venda de frações de títulos públicos de forma atômica;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fawrtn0r42u2ttjxvvmpm.png" alt=" " width="800" height="381"&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Em agosto de 2025 no evento Blockchain.Rio, o atual presidente do Bacen (Galipolo) confirmou que o DREX não é uma CDBC (&lt;em&gt;"como a literatura clássica define"&lt;/em&gt;) nem uma stablecoin, e sim uma ferramenta para tokenização de ativos (confirmando também que atualmente o Bacen não vai utilizar blockchain nessa fase).&lt;/p&gt;

&lt;h2&gt;
  
  
  Beleza. Mas o que a AWS tem a ver com isso?
&lt;/h2&gt;

&lt;p&gt;Quando pensamos em como o Bacen ou mesmo um banco regional poderia operar o DREX para tokenizar ativos em escala nacional, a pergunta não é apenas &lt;em&gt;qual blockchain usar, mas como sustentar essa infraestrutura sem se perder em custo e complexidade?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;É aqui que entra o &lt;em&gt;Amazon Managed Blockchain (AMB)&lt;/em&gt;, um serviço da AWS que reduz o custo operacional de colocar blockchains em produção, utilizando o poder do EKS com KMS para servir como nós de rede em outras blockchains, uma vez que o AMB suporta Hyperledger Fabric, e o Bacen estuda implementar a Hyperledger Besu.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Até aqui tentei ser menos técnico, contudo agora vou ligar o modo 'escovador de bit'.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Solução para o Bacen
&lt;/h3&gt;

&lt;p&gt;Falando primeiro sobre o AMB, ele não é simplesmente o blockchain da AWS, e sim um conjunto de serviços que permitem consumir ou criar redes permissionadas (hyperledger fabric), redes públicas (ethereum/polygon) e utilizar o AMB Query como a camada de analytics pronta para consultar de transações, saldos e históricos.&lt;/p&gt;

&lt;p&gt;A vantagem em utilizar o AMB para o DREX, seria a governança distribuída, canais privados e uma ótima integração corporativa (dica para o Bacen). De fato a Hyperledger Fabric é a blockchain utilizada por alguns projetos de CBDCs como o DCash no Caribe, o Aber na Arábia Saudita, o Agila nas Filipinas e até o Venus (projeto de títulos) na França.&lt;/p&gt;

&lt;h3&gt;
  
  
  Amazon Managed Blockchain
&lt;/h3&gt;

&lt;p&gt;No AMB além de criar as redes permissionadas, cada participante (membro) dela tem seu papel definido e controlado.&lt;/p&gt;

&lt;p&gt;Elementos principais:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Network&lt;/strong&gt;: é a rede Fabric, criada no AMB, onde ficam os membros;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Members&lt;/strong&gt;: é a representação de uma organização participante (por exemplo Banco A, Banco B, Bacen). É nele que rodam os Peers e a CA, além da governança ser baseada nele.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Peer Nodes&lt;/strong&gt;: Executam smart contracts (chaincode), validam transações e mantêm o ledger.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Certificate Authority(CA)&lt;/strong&gt;: emite credenciais digitais que identificam cada participante/nó.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Channels&lt;/strong&gt;: Subredes privadas onde apenas membros autorizados trocam transações.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmhbk6qwkontqmsqyh4r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmhbk6qwkontqmsqyh4r.png" alt=" " width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Além disso a integração com serviços como IAM (para definir quem pode fazer o que), KMS (que armazena as chaves criptográficas) e Cloudtrail (logs de auditoria) são simples de serem integradas.&lt;/p&gt;

&lt;p&gt;Um possivel fluxo seria:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;O Bacen criaria a &lt;em&gt;Network Fabric&lt;/em&gt; no AMB e define o primeiro Member;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Esse membro é o responsável por definir políticas de governança (quem pode ser convidado, como aprovar chaincodes, etc).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bancos e fintechs entrariam como convidadas para ingressar na rede como novos membros (isso via AMB);&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cada instituição ingressa como um &lt;strong&gt;Membro&lt;/strong&gt;, com autonomia sobre seus nós e identidades.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cada membro cria **Peers **para validar transações e hospedar &lt;em&gt;chaincodes&lt;/em&gt;;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Um **CA **do AMB gera certificados para admins, peers e clientes;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cada membro tem seu próprio CA, emitindo certificados para:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Admins&lt;/strong&gt;: que vão gerir a rede;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Peer&lt;/strong&gt;: que são os nós validadores;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clientes/aplicações&lt;/strong&gt;: App que compra titulos do Tesouro, ou que consulta o saldo da reserva bancária;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;São criados &lt;strong&gt;Channels&lt;/strong&gt;, onde subsetores podem trocar informações privadas (ex.: liquidação de ativos tokenizados).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aqui o Bacen poderia criar channels privados para liquidação interbancária;&lt;/li&gt;
&lt;li&gt;Outra possibilidade, seria a criação de tokenização de ativos em um canal apenas com fintechs;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;O _chaincode _(smart contract) é implantado nos peers e passa a reger a lógica de negócios;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A cereja no bolo, onde seria feita a criação (mint) e a destruição/liquidação (burn) de tokens;&lt;/li&gt;
&lt;li&gt;Aqui o céu é o limite, podendo programar liquidações, transferências interbancárias e etc.;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Toda transação é assinada, validada pelos peers do canal e registrada no ledger imutável;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Resumindo, se o Bacen quisesse rodar um piloto de Drex com governança distribuída entre bancos, poderia montar a rede no Hyperleger Fabric via AMB, enquanto um banco privado poderia, ao mesmo tempo, usar o AMB Query para auditar movimentações tokenizadas sem manter servidores extras.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mas porque fazer com AMB
&lt;/h3&gt;

&lt;p&gt;A grande vantagem do AMB é ser um serviço gerenciado, e para a Bacen e grandes bancos e consórcios, o AMB tende a equilibrar governança + segurança + operação. Para fintechs e PoC, rodar em EKS/EC2 (ou usar provedores publicos) gera agilidade e controle, mas com um custo operacional, é claro. Abaixo comparo de uma forma melhor:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Critério&lt;/th&gt;
&lt;th&gt;AMB&lt;/th&gt;
&lt;th&gt;Nó próprio&lt;/th&gt;
&lt;th&gt;Rede pública (Gnosis)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Operação&lt;/td&gt;
&lt;td&gt;Totalmente gerenciado (patching, HA)&lt;/td&gt;
&lt;td&gt;Você opera tudo (alto controle)&lt;/td&gt;
&lt;td&gt;100% terceirizado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Segurança&lt;/td&gt;
&lt;td&gt;IAM/KMS/VPC integrados&lt;/td&gt;
&lt;td&gt;Você define hardening/chaves&lt;/td&gt;
&lt;td&gt;Depende do provedor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Governança&lt;/td&gt;
&lt;td&gt;Forte (ideal p/ consórcios/BCB)&lt;/td&gt;
&lt;td&gt;Forte (se bem implementado)&lt;/td&gt;
&lt;td&gt;Variável&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Desempenho/Latência&lt;/td&gt;
&lt;td&gt;Boa, mas dentro do modelo do serviço&lt;/td&gt;
&lt;td&gt;Máximo controle (afinamento p2p, disco, rede)&lt;/td&gt;
&lt;td&gt;Boa, mas sem garantias finas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custo&lt;/td&gt;
&lt;td&gt;Por nó/armazenamento/requests&lt;/td&gt;
&lt;td&gt;EC2/EBS/EKS/operacional&lt;/td&gt;
&lt;td&gt;Assinatura/uso (egress/limites)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interoperabilidade&lt;/td&gt;
&lt;td&gt;Fabric + públicos suportados (Eth/Polygon)&lt;/td&gt;
&lt;td&gt;Total (você escolhe stack)&lt;/td&gt;
&lt;td&gt;Boa em públicos; lock-in do provedor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dados on-chain (analytics)&lt;/td&gt;
&lt;td&gt;AMB Query (serverless multi-cadeia)&lt;/td&gt;
&lt;td&gt;Você indexa (TheGraph/ETL)&lt;/td&gt;
&lt;td&gt;Alguns provedores oferecem APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;No contexto atual, o &lt;strong&gt;Amazon Managed Blockchain (AMB)&lt;/strong&gt; aparece como uma opção estratégica para bancos e fintechs que precisam integrar-se rapidamente ao ecossistema, sem carregar o peso e manter toda a pilha de infra (considerando, é claro, o exemplo hipotético utilizado).&lt;br&gt;
O AMB entrega:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Governança e compliance prontos para uso;&lt;/li&gt;
&lt;li&gt;Escalabilidae sob demanda, sem a complexidade de clusters Kubernetes;&lt;/li&gt;
&lt;li&gt;Integração direta com serviços AWS;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Contudo há limitações: adotar o AMB significa abrir mão de parte da flexibilidade e da independência que redes públicas ou nós próprios em EKS permitem. É um &lt;em&gt;trade-off&lt;/em&gt; inevitável entre o &lt;strong&gt;controle total&lt;/strong&gt; ou &lt;strong&gt;velocidade com governança pronta.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Por fim, a crítica é clara: o futuro do Drex, do mercado financeiro e da tokenização não será definido pela tecnologia, mas pela forma com que o Bacen, bancos e fintechs vão equilibrar centralização e abertura. Talvez o verdadeiro desafio não seja escolher entre Fabric, Besu, AMB ou EKS, mas sim entender &lt;strong&gt;quando usar cada abordagem.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>web3</category>
      <category>aws</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Bitnami e o fim do repositório gratuito de imagens: o que muda para DevOps e Cloud Engineers?</title>
      <dc:creator>Thiago Sagara</dc:creator>
      <pubDate>Wed, 27 Aug 2025 15:57:26 +0000</pubDate>
      <link>https://dev.to/thiagosagara/bitnami-e-o-fim-do-repositorio-gratuito-de-imagens-o-que-muda-para-devops-e-cloud-engineers-12m2</link>
      <guid>https://dev.to/thiagosagara/bitnami-e-o-fim-do-repositorio-gratuito-de-imagens-o-que-muda-para-devops-e-cloud-engineers-12m2</guid>
      <description>&lt;p&gt;Em meados de julho/25 a comunidade de cloud e DevOps recebeu uma noticia um tanto quanto peculiar: a Bitnami anunciou alterações do seu repositório publico e gratuito de imagens ded containers e charts, o que na prática é um jeito 'maqueado' de descontinar o projeto open.&lt;/p&gt;

&lt;p&gt;Para contextualizar, a Bitnami nasceu como uma empresa focada em simplificar a distribuição de aplicações open source, empacotando softwares em instalações fáceis, VMs, charts Helm e imagens Docker. Em 2019, foi adquirida pela VMware (hoje Broadcom), e desde então expandiu o catálogo de soluções.&lt;/p&gt;

&lt;p&gt;Algumas das imagens mais conhecidas e amplamente usadas incluem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PostgreSQL, MySQL e MariaDB:&lt;/strong&gt; banco de dados para produção;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NGINX, Apache, Tomcat:&lt;/strong&gt; Servidores web e de aplicação;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redis, RabbitMQ e Kafka:&lt;/strong&gt; Soluções de mensageria e cache;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wordpress, Drupal, Magento:&lt;/strong&gt; Aplicações open source populares;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A vantagem de pegar imagens open e empacota-las? Incorporação de boas práticas como segurança reforçada, facilidade na configuração para k8s e helm, imagens 'prontas' para produção bom tuning básico de performance, as imagens vinham acompanhadas de charts Helm ociciais da própria Bitnami, ou seja em resumo ela transformava software cru em software 'pronto para rodar em nuvem'.&lt;/p&gt;

&lt;p&gt;Mas essa fase esta chegando ao fim.&lt;/p&gt;

&lt;h2&gt;
  
  
  Principais mudanças
&lt;/h2&gt;

&lt;p&gt;Vejam que o repositório gratuito permanecerá existindo com o nome Bitnami Legacy Registry, contudo com algumas limitações, cito-as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Não terá containers versionados&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redução significativa no catalogo&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Não haverá updates de segurança&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remoção das imagens de comunidade Debian-based&lt;/strong&gt;;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Assim permanece gratuito imagens que eles chamaram de 'somente para desenvolvimento', com um catálogo limitado de aplicações, e todas apenas com a tag 'lastet' (o que nunca é uma boa opção para se ter em produção).&lt;/p&gt;

&lt;p&gt;Com a versão paga, chamada de Bitnami Secure Images (BSI), ficou too o histórico da imagem (versões), bases com hardened, SBOMs e é claro updates  de segurança e suporte. Tudo isso por um preço de $6.000/mês.&lt;/p&gt;

&lt;h2&gt;
  
  
  Impactos nos pipelines, charts e Helm
&lt;/h2&gt;

&lt;p&gt;A mudança impacta diretamente pipelines de CI/CD, charts do Helm e manifestos Kubernetes que referenciam imagens da Bitnami. Projetos que até ontem "simplesmente funcionavam" podem começar a quebrar com erros de &lt;code&gt;Image not found&lt;/code&gt;, &lt;code&gt;ImagePullBackOff&lt;/code&gt; ou &lt;code&gt;ErrImagePull&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Mas onde o impacto vai ser mais potente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pipelines de build/deploy:&lt;/strong&gt; falhas ao puxar imagens já existentes, pois o código não terá a referencia correta;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Charts Helm:&lt;/strong&gt; centenas de charts oficiais e derivados utilizam imagens da Bitnami como dependencia;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ambientes Kubernetes:&lt;/strong&gt; clusters rodando workloads baseados nessas imagens correm risco ded indisponibilidade em novos deploys;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Na prática essa alteração em um repositório tão importante para CI/Cs, charts e clustes em geral escala o evento para problema na cadeia de suprimentos. &lt;/p&gt;

&lt;p&gt;Além do impacto técnico, a sensação de 'soco no estomago' na comunidade foi grande, e até injusto de certa forma. Usar a Bitnami ao invés de imagens oficiais tirava certo peso dos desenvolvedores e devOps, pois a imagem vinha com boas práticas adicionais, contudo também contava com bastante apoio da comunidaded na resolução de issues e documentação.&lt;/p&gt;

&lt;p&gt;Receber o anuncio com a opção de 'migrar' em 45 dias é de uma falta de empatia gigante, e aqui nem acredito que capitalizar o trabalho é errado, mas sim a forma que isso foi feito. Para efeito e comparação em 2020 a RedHat anunciou mudança de foco para o CentOS, mas apenas em julho de 2024  ele entrou em EOL, na prática a RedHat ainda 'suportou' o projeto com atualizações de segurança e manutenção por 4 anos, o que deu a comunidade tempo para fazer &lt;em&gt;forks&lt;/em&gt; e até iniciar outros projetos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Opções urgentes
&lt;/h2&gt;

&lt;p&gt;As opções para (pelo menos) ganhar tempo de uma solução mais robusta podem incluir fazer o cache local das imagens utilizadas atualmente com um &lt;code&gt;docker save&lt;/code&gt;, ou utilizar repositórios privados como o AWS ECR ou o Harbor. Dessa forma é possivel congelar as versões críticas até que um plano de migração esteja definido.&lt;/p&gt;

&lt;p&gt;Outra opção (um pouco mais kamikaze) é utilizar o repositório legado, e simplesmente substituir o código para &lt;code&gt;bitnamilegacy/&amp;lt;image&amp;gt;&lt;/code&gt;. O problema disso: não tem updates, suporte e manutenção, além de existir a possibilidade de uma atualização da imagem, e por conta do &lt;em&gt;latest&lt;/em&gt; você ter surpresas na aplicação.&lt;/p&gt;

&lt;p&gt;Existe também a opção de fazer o subscribe do Bitnami Secure Image, contudo pagar por algo que antes era gratuito, pode exigir um estudo mais aprofundado das empresas para calcular o retorno de investimento e até a nova margem (a depender do tamanho da empresa). Note que $6.000/mês no Brasil pode significar o custo de TODA conta da AWS, o que na prática deixa inviável a escolha.&lt;/p&gt;

&lt;h2&gt;
  
  
  Opções definitivas
&lt;/h2&gt;

&lt;p&gt;Pra resolver de forma definitiva é necessário identificar os workloads críticos que utilizam imagens bitnami, e classifica-los por impacto comercial. Dessa forma (com o impacto financeiro calculado) será possivel analisar o risco/retorno do custo da licença.&lt;/p&gt;

&lt;p&gt;Se obter a licença não for uma opção, as alternativas são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Imagens oficiais:&lt;/strong&gt; Ou seja, utilizar o repositório oficial da imagem, como postgres, redis e etc;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Imagens da AWS:&lt;/strong&gt; Usar RDS ou mesmo o ElastiCache é uma ótima opção para não ter esse tipo de problema;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Serviços Gerenciados:&lt;/strong&gt; Para aplicações mais complexas como elasticsearch e kafka ou rabbitMQ, serviços como o OpenSearch e o Amazon MSK são opções ótimas;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Não que a comunidade precisasse de justificativa, uma vez que o produto precisa ser capitalizado, mas a explicação da Broadcom é que a mudança visa um repositório mais seguro e com suporte. Contudo a segurança não depende necessariamente de &lt;em&gt;paywall&lt;/em&gt;.&lt;br&gt;
Ferramentas como Trivy, Grype ou Clair já fazem analise de vulnerabilidade, assim bastaria incorpora-las na pipeline de CI/CD e até integrar com SCA para aumentar a analise.&lt;/p&gt;

&lt;p&gt;Na prática, o movimento reflete mais uma estratégia a Broadcom pós-aquisição da VMware: monetizar ativos consolidados. O que, novamente, não acho errado, contudo o jeito com que foi feito (abrupto, sem períoo de transição claro e justo) deixará muitas empresas a merce de renovar por uma taxa grande, apenas para conseguir mais tempo para planejar a migração.&lt;/p&gt;

&lt;p&gt;No fim, quem perde não são apenas os entusiastas de open source, mas também too o ecossistema que dependia da Bitnami, e assim aprendemos que ser cloud-native é também pensar em cenários onde até a Docker pode começar a cobrar pela disponibilidade.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como verificar se possuo imagens bitnami
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Cluster Kubernetes (tudo que ja virou pod):
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get pods -A -o json \
| jq -r '.items[]
  | .metadata.namespace as $ns
  | .metadata.name as $name
  | (.spec.initContainers // []) + (.spec.containers // [])
  | .[].image
' | sort -u | grep -E '(^|/)bitnami/'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Cluster Kubernetes (tudo que ainda não virou pod):
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get deploy,sts,ds,job,cronjob -A -o json \
| jq -r '.items[]
  | .metadata.namespace as $ns
  | .metadata.name as $name
  | (.spec.template.spec.initContainers // []) + (.spec.template.spec.containers // [])
  | .[].image
' | sort -u | grep -E '(^|/)bitnami/'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Helm:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm ls -A -o json \
| jq -r '.[] | [.name,.namespace] | @tsv' \
| while IFS=$'\t' read -r rel ns; do
    echo "=== $ns/$rel ==="
    helm get values "$rel" -n "$ns" | grep -nE '(^\s*image:|repository:).*bitnami' || true
  done
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Pipeline no Jenkins para procurar dependencias:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pipeline {
  agent any
  options { ansiColor('xterm') }
  environment {
    BITNAMI_REGEX = '(?i)(^|\\s|/)(bitnami)(/|:)'
  }
  stages {
    stage('Audit - Git Manifests') {
      steps {
        sh '''
          echo "[GIT] Procurando imagens/repo Bitnami..."
          set +e
          MATCHES=0

          # 1) Imagens em manifests YAML
          FOUND1=$(find . -type f -name "*.y*ml" -print0 \
            | xargs -0 -I{} yq -r '.. | select(has("image")) | .image' '{}' 2&amp;gt;/dev/null \
            | grep -E "$BITNAMI_REGEX" || true)
          if [ -n "$FOUND1" ]; then echo "$FOUND1" | sort -u | sed "s/^/[YAML IMG] /"; MATCHES=1; fi

          # 2) Helm/Chart deps
          FOUND2=$(git grep -nEi "(repository|repoURL):\\s*(oci://registry-1\\.docker\\.io/bitnamicharts|https?://charts\\.bitnami\\.com/bitnami)" || true)
          if [ -n "$FOUND2" ]; then echo "$FOUND2" | sed "s/^/[HELM REPO] /"; MATCHES=1; fi

          # 3) Dockerfiles
          FOUND3=$(git grep -nEi "FROM\\s+bitnami/" || true)
          if [ -n "$FOUND3" ]; then echo "$FOUND3" | sed "s/^/[DOCKERFILE] /"; MATCHES=1; fi

          if [ $MATCHES -ne 0 ]; then
            echo "✖ Encontrado Bitnami. Interrompendo pipeline."
            exit 2
          fi
          echo "✔ Nenhuma referência Bitnami encontrada no Git."
        '''
      }
    }

    stage('Audit - Cluster (opcional)') {
      when { expression { return env.KUBECONFIG?.trim() } }
      steps {
        sh '''
          echo "[CLUSTER] Vasculhando imagens em workloads..."
          set +e
          OUT=$(kubectl get deploy,sts,ds,job,cronjob -A -o json \
            | jq -r '.items[] | (.spec.template.spec.initContainers // []) + (.spec.template.spec.containers // []) | .[].image' \
            | sort -u | grep -E "$BITNAMI_REGEX" || true)
          if [ -n "$OUT" ]; then
            echo "$OUT" | sed "s/^/[K8S IMG] /"
            echo "✖ Cluster contém imagens Bitnami em workloads desejados."
            exit 3
          fi
          echo "✔ Nenhuma imagem Bitnami detectada em workloads."
        '''
      }
    }
  }
  post {
    always {
      archiveArtifacts artifacts: '**/audit*.log', allowEmptyArchive: true
    }
    failure {
      echo 'Falhou por referências Bitnami. Verifique os logs acima.'
    }
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Referências:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://news.broadcom.com/app-dev/broadcom-introduces-bitnami-secure-images-for-production-ready-containerized-applications" rel="noopener noreferrer"&gt;Anuncio Broadcom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/bitnami/charts/issues/35164" rel="noopener noreferrer"&gt;Issue oficial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>docker</category>
      <category>programming</category>
    </item>
    <item>
      <title>Entendendo Docker: o que é, como funciona e por que usar</title>
      <dc:creator>Thiago Sagara</dc:creator>
      <pubDate>Wed, 30 Jul 2025 21:05:57 +0000</pubDate>
      <link>https://dev.to/thiagosagara/entendendo-docker-o-que-e-como-funciona-e-por-que-usar-1cm2</link>
      <guid>https://dev.to/thiagosagara/entendendo-docker-o-que-e-como-funciona-e-por-que-usar-1cm2</guid>
      <description>

&lt;p&gt;Repost do original: &lt;a href="https://www.darede.com.br/entendendo-docker/" rel="noopener noreferrer"&gt;https://www.darede.com.br/entendendo-docker/&lt;/a&gt; da Darede&lt;/p&gt;

&lt;p&gt;O Docker é uma das melhores plataformas para o deploy de uma aplicação. Para entender sua funcionalidade, confira esse artigo em nosso blog! &lt;/p&gt;

&lt;p&gt;A evolução do deploy de uma aplicação passou por vários processos. Inicialmente tínhamos um servidor físico para cada serviço, ou seja, havia um servidor, um sistema operacional e uma aplicação. Isso gera um aumento em manutenção de hardware, de atualização de patches de segurança ou upgrade da aplicação. Com a virtualização criamos uma camada de abstração do hardware, ou seja, podemos em UM hardware ter vários SOs, e consequentemente várias aplicações. Contudo a necessidade de gerenciamento do SO ainda existe (e ainda existe o SO do próprio hypervisor). Por fim chegamos ao container, ele eleva a abstração para o SO. Isto é, conseguimos abstrair o hardware e o sistema operacional, e deixar o container apenas para cuidar da aplicação. Nesse artigo vamos entender sobre o Docker.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7bq2fgtewuziog4pnyes.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7bq2fgtewuziog4pnyes.png" alt="Conteinerização vs Virtualização" width="416" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Instalação (centos8)
&lt;/h2&gt;

&lt;p&gt;Instalaremos o docker, e depois realizaremos o pull de uma imagem do tac_plus para servir como servidor de autenticação para nossos equipamentos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remova todas as versões de docker que possam estar habilitadas:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Desabilite o firewalld (por algum motivo ele impossibilita a resolução de DNS dentro dos containers)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl disable firewalld
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Adicione o repositório do docker
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Instale o docker com --nobest para compatibilidade com CentOS 8
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dnf install --nobest docker-ce
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Habilite o docker no sistema
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
systemctl start docker
systemctl enable docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Teste o docker validando a versão
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[root@devops ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.11
 API version:       1.39
 Go version:        go1.13.10
 Git commit:        42e35e61f3
 Built:             Mon Jun  1 09:13:48 2020
 OS/Arch:           linux/amd64
 Experimental:      false


Server: Docker Engine - Community
 Engine:
  Version:          18.09.1
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       4c52b90
  Built:            Wed Jan  9 19:06:30 2019
  OS/Arch:          linux/amd64
  Experimental:     false
[root@devops ~]#
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Comandos básicos
&lt;/h2&gt;

&lt;p&gt;Com o Docker instalado vamos agora falar de alguns comandos básicos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;docker ps -a: Mostra todos os containers, tanto os em execução quanto os parados.&lt;/li&gt;
&lt;li&gt;docker run: Executa um container com uma imagem especifica (no nosso caso o Hello-Worl&lt;/li&gt;
&lt;li&gt;docker start|stop: Inicia um (ou mais) containeres parados, ou para um (ou mais) containers ativos.&lt;/li&gt;
&lt;li&gt;docker rm: Remove um (ou mais) container. (voce pega a lista com o docker ps -a)&lt;/li&gt;
&lt;li&gt;docker rmi: Remove um (ou mais) imagens. (voce pega a lista com o docker images)&lt;/li&gt;
&lt;li&gt;docker container prune: Remove todos os containers que estão parados.&lt;/li&gt;
&lt;li&gt;docker images: Mostra todas as images que voce ja fez o pull&lt;/li&gt;
&lt;li&gt;docker exec -it: Roda um comando dentro do container (só o exec), e com a opção "-it" voce aloca um tty dentro do container, ou seja, é a opção para ter acesso a console do container. exemplo: docker exec -it hello-wold bash&lt;/li&gt;
&lt;li&gt;docker network ls: Lista todas as redes criadas no Docker&lt;/li&gt;
&lt;li&gt;docker run: Executa de fato (ou roda) o docker.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por fim para testar, vamos subir um docker com o famoso hello-word:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[root@devops ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
Status: Downloaded newer image for hello-world:latest


Hello from Docker!
This message shows that your installation appears to be working correctly.


To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.


To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash


Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/


For more examples and ideas, visit:
 https://docs.docker.com/get-started/


[root@devops ~]#
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Xero no suvaco!!!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>braziliandevs</category>
      <category>cloud</category>
      <category>docker</category>
    </item>
  </channel>
</rss>
