<?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: Igor Araujo</title>
    <description>The latest articles on DEV Community by Igor Araujo (@igoraraujo).</description>
    <link>https://dev.to/igoraraujo</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%2F902776%2Fe16501fe-075b-48e6-b741-7452a6ee96e9.jpeg</url>
      <title>DEV Community: Igor Araujo</title>
      <link>https://dev.to/igoraraujo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/igoraraujo"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Igor Araujo</dc:creator>
      <pubDate>Fri, 19 Sep 2025 13:40:28 +0000</pubDate>
      <link>https://dev.to/igoraraujo/-ilc</link>
      <guid>https://dev.to/igoraraujo/-ilc</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/semgrep/a-guide-to-using-graphites-stacked-prs-for-github-users-5c47" class="crayons-story__hidden-navigation-link"&gt;Make Faster and Better GitHub PRs With This Graphite Workflow&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;
          &lt;a class="crayons-logo crayons-logo--l" href="/semgrep"&gt;
            &lt;img alt="Semgrep logo" 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%2Forganization%2Fprofile_image%2F10433%2F502a9cbc-c1eb-4bc4-8182-95a4cfdfb0a0.jpg" class="crayons-logo__image"&gt;
          &lt;/a&gt;

          &lt;a href="/mjambon" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&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%2Fuser%2Fprofile_image%2F3512681%2F5c5449cf-df26-4d04-acd4-ec38e90e4e3d.jpeg" alt="mjambon profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/mjambon" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Martin Jambon
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Martin Jambon
                
              
              &lt;div id="story-author-preview-content-2854726" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/mjambon" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3512681%2F5c5449cf-df26-4d04-acd4-ec38e90e4e3d.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Martin Jambon&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

            &lt;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/semgrep" class="crayons-story__secondary fw-medium"&gt;Semgrep&lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/semgrep/a-guide-to-using-graphites-stacked-prs-for-github-users-5c47" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 19 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/semgrep/a-guide-to-using-graphites-stacked-prs-for-github-users-5c47" id="article-link-2854726"&gt;
          Make Faster and Better GitHub PRs With This Graphite Workflow
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/github"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;github&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/git"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;git&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/gitlab"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;gitlab&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/graphite"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;graphite&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/semgrep/a-guide-to-using-graphites-stacked-prs-for-github-users-5c47" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;6&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/semgrep/a-guide-to-using-graphites-stacked-prs-for-github-users-5c47#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>github</category>
      <category>git</category>
      <category>gitlab</category>
    </item>
    <item>
      <title>Coolify: A Revolução do Deploy Self-Hosted</title>
      <dc:creator>Igor Araujo</dc:creator>
      <pubDate>Fri, 19 Sep 2025 13:34:19 +0000</pubDate>
      <link>https://dev.to/igoraraujo/coolify-a-revolucao-do-deploy-self-hosted-1077</link>
      <guid>https://dev.to/igoraraujo/coolify-a-revolucao-do-deploy-self-hosted-1077</guid>
      <description>&lt;p&gt;🎙️ Em um momento em que &lt;strong&gt;o controle sobre a infraestrutura&lt;/strong&gt; se torna cada vez mais estratégico, muitas equipes buscam alternativas ao modelo “vendor lock-in” das grandes plataformas de nuvem. É nesse contexto que o &lt;strong&gt;Coolify&lt;/strong&gt; surge como um protagonista: uma plataforma open source que oferece a simplicidade do Heroku ou do Vercel, mas com a liberdade de rodar em qualquer servidor que você controle.&lt;/p&gt;

&lt;p&gt;Se você já sonhou em ter sua própria &lt;strong&gt;plataforma como serviço (PaaS)&lt;/strong&gt;, com deploy automático, monitoramento, banco de dados gerenciado e integrações modernas — tudo sem depender de terceiros — o Coolify é a resposta.&lt;/p&gt;




&lt;h2&gt;
  
  
  O que é o Coolify?
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;Coolify&lt;/strong&gt; é um PaaS open source que transforma seu servidor em uma plataforma completa de deploy e gestão de aplicações.&lt;br&gt;
Ele abstrai a complexidade de containers, redes e orquestração, oferecendo uma experiência parecida com serviços comerciais como &lt;strong&gt;Heroku, Netlify ou Railway&lt;/strong&gt;, mas mantendo você no controle total da sua infraestrutura.&lt;/p&gt;

&lt;p&gt;👉 Em termos simples: com o Coolify, você conecta seu repositório Git, define variáveis de ambiente e clica em &lt;strong&gt;deploy&lt;/strong&gt;. O resto — build, containerização, orquestração e exposição — acontece de forma automática.&lt;/p&gt;




&lt;h2&gt;
  
  
  Por que o Coolify é diferente?
&lt;/h2&gt;

&lt;p&gt;✨ Alguns diferenciais que fazem o Coolify ganhar espaço:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosted de verdade&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Você pode rodar no seu próprio VPS, servidor dedicado ou até no desktop.&lt;/li&gt;
&lt;li&gt;Sem custos ocultos ou dependência de provedores.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Suporte nativo a múltiplos runtimes&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Node.js, PHP, Python, Go, Rust, Ruby, Java e mais.&lt;/li&gt;
&lt;li&gt;Bancos de dados como PostgreSQL, MySQL, Redis e MongoDB, com provisioning automático.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Deploy simplificado via Git&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Conecte GitHub, GitLab ou Bitbucket.&lt;/li&gt;
&lt;li&gt;O Coolify faz build automático (usando &lt;strong&gt;Nixpacks&lt;/strong&gt; ou Dockerfile, se você preferir).&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ambientes isolados&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Cada aplicação roda em containers separados.&lt;/li&gt;
&lt;li&gt;Gestão de domínios, SSL com Let’s Encrypt e balanceamento de carga embutido.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Extensível&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Suporte a APIs, webhooks e configurações avançadas.&lt;/li&gt;
&lt;li&gt;Flexibilidade para adaptar à sua stack existente.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Como funciona na prática?
&lt;/h2&gt;

&lt;p&gt;🔧 O ciclo com o Coolify é direto:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Instalação&lt;/strong&gt; (em qualquer servidor Linux com Docker):
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://cdn.coollabs.io/coolify/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Configuração inicial&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Acesse o painel web.&lt;/li&gt;
&lt;li&gt;Crie sua conta admin.&lt;/li&gt;
&lt;li&gt;Configure domínios e certificados SSL.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Conexão ao repositório&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Integre seu GitHub/GitLab/Bitbucket.&lt;/li&gt;
&lt;li&gt;Escolha o projeto a ser deployado.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Deploy automático&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;O Coolify detecta a linguagem.&lt;/li&gt;
&lt;li&gt;Usa &lt;strong&gt;Nixpacks&lt;/strong&gt; para gerar a imagem (ou um Dockerfile customizado).&lt;/li&gt;
&lt;li&gt;Provisiona banco, aplica variáveis e expõe o serviço.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Gerenciamento contínuo&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Logs em tempo real.&lt;/li&gt;
&lt;li&gt;Escalabilidade horizontal (múltiplas réplicas).&lt;/li&gt;
&lt;li&gt;Backups e restauração de bancos com um clique.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Casos de uso
&lt;/h2&gt;

&lt;p&gt;🌍 O Coolify é ideal para:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Startups&lt;/strong&gt; que querem reduzir custos de cloud, mas não abrir mão de agilidade.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Empresas com compliance rígido&lt;/strong&gt;, que precisam manter dados dentro de servidores próprios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Equipes DevOps&lt;/strong&gt; que desejam simplificar o deploy sem sacrificar o controle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desenvolvedores independentes&lt;/strong&gt; que querem hospedar projetos pessoais com experiência de nível enterprise.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ferramenta&lt;/th&gt;
&lt;th&gt;Tipo&lt;/th&gt;
&lt;th&gt;Abordagem&lt;/th&gt;
&lt;th&gt;Pontos Fortes&lt;/th&gt;
&lt;th&gt;Pontos Fracos&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Heroku&lt;/td&gt;
&lt;td&gt;PaaS SaaS&lt;/td&gt;
&lt;td&gt;Cloud centralizada&lt;/td&gt;
&lt;td&gt;Simplicidade, ecossistema&lt;/td&gt;
&lt;td&gt;Custos altos, vendor lock-in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vercel/Netlify&lt;/td&gt;
&lt;td&gt;PaaS SaaS&lt;/td&gt;
&lt;td&gt;Serverless focado em web&lt;/td&gt;
&lt;td&gt;Deploy rápido, edge functions&lt;/td&gt;
&lt;td&gt;Limitado para backends pesados&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Render/Railway&lt;/td&gt;
&lt;td&gt;PaaS SaaS&lt;/td&gt;
&lt;td&gt;Nuvem gerenciada&lt;/td&gt;
&lt;td&gt;Automação moderna, integrações&lt;/td&gt;
&lt;td&gt;Custos crescem com escala&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Coolify&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;PaaS Self&lt;/td&gt;
&lt;td&gt;Open source + Docker&lt;/td&gt;
&lt;td&gt;Controle total, multi-runtime, extensível&lt;/td&gt;
&lt;td&gt;Curva inicial de setup maior&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Integrações e ecossistema
&lt;/h2&gt;

&lt;p&gt;✨ O Coolify conversa naturalmente com:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Provedores Git&lt;/strong&gt; (GitHub, GitLab, Bitbucket).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Certbot/Let’s Encrypt&lt;/strong&gt; para SSL automático.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker&lt;/strong&gt; como motor principal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nixpacks&lt;/strong&gt; para builds declarativos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Banco de dados integrados&lt;/strong&gt; (Postgres, MySQL, Redis, MongoDB).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Desafios e limitações
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Infraestrutura é sua responsabilidade&lt;/strong&gt;: você precisa cuidar de atualizações, backups do servidor e segurança.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Curva de aprendizado inicial&lt;/strong&gt;: configurar ambientes complexos pode exigir algum conhecimento de Docker e redes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Menor suporte enterprise&lt;/strong&gt; comparado a players SaaS, embora a comunidade esteja crescendo rápido.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  O futuro do Coolify
&lt;/h2&gt;

&lt;p&gt;O Coolify se posiciona como parte de uma tendência maior: a de &lt;strong&gt;empoderar desenvolvedores com plataformas self-hosted que replicam a experiência premium da cloud&lt;/strong&gt;.&lt;br&gt;
Ele representa uma ponte entre o mundo DIY do Docker/Kubernetes e a simplicidade de players como Heroku e Vercel.&lt;/p&gt;

&lt;p&gt;💡 Em médio prazo, é possível imaginar o Coolify expandindo sua base para suportar &lt;strong&gt;multi-servidores com orquestração estilo Kubernetes&lt;/strong&gt;, integrando métricas nativas de observabilidade e até criando um marketplace de extensões da comunidade.&lt;/p&gt;




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

&lt;p&gt;O &lt;strong&gt;Coolify&lt;/strong&gt; é mais do que uma alternativa de deploy: é uma &lt;strong&gt;declaração de independência da nuvem centralizada&lt;/strong&gt;.&lt;br&gt;
Ele devolve ao desenvolvedor o controle sobre sua infraestrutura, sem abrir mão da simplicidade que tornou os PaaS tão populares.&lt;/p&gt;

&lt;p&gt;🌍 Para quem deseja unir &lt;strong&gt;custo-eficiência, liberdade e experiência moderna de deploy&lt;/strong&gt;, o Coolify merece um lugar de destaque na sua stack.&lt;br&gt;
Pode ser o momento de transformar aquele VPS ocioso em uma plataforma robusta de deploy — e descobrir que o futuro da sua infraestrutura pode estar nas suas próprias mãos.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Nixpacks: Automação de Builds Moderna e Declarativa</title>
      <dc:creator>Igor Araujo</dc:creator>
      <pubDate>Wed, 17 Sep 2025 20:09:08 +0000</pubDate>
      <link>https://dev.to/igoraraujo/nixpacks-automacao-de-builds-moderna-e-declarativa-33fo</link>
      <guid>https://dev.to/igoraraujo/nixpacks-automacao-de-builds-moderna-e-declarativa-33fo</guid>
      <description>&lt;p&gt;🎙️ Em um cenário em que &lt;strong&gt;a experiência do desenvolvedor (DX)&lt;/strong&gt; é cada vez mais determinante para a produtividade das equipes, surgem ferramentas que vão além do “simples build de aplicações”. Entre elas, o &lt;strong&gt;Nixpacks&lt;/strong&gt; vem ganhando destaque por propor uma abordagem declarativa, reprodutível e escalável para construção de ambientes de execução.&lt;/p&gt;

&lt;p&gt;Se você já se frustrou com &lt;strong&gt;Dockerfiles gigantes&lt;/strong&gt;, divergências entre ambientes ou builds inconsistentes em servidores diferentes, o Nixpacks pode representar exatamente o salto de qualidade que faltava na sua stack.&lt;/p&gt;




&lt;h2&gt;
  
  
  O que é o Nixpacks?
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;Nixpacks&lt;/strong&gt; é uma ferramenta open source criada pela equipe da &lt;a href="https://railway.app" rel="noopener noreferrer"&gt;Railway&lt;/a&gt;, projetada para &lt;strong&gt;gerar automaticamente imagens de container a partir do código-fonte&lt;/strong&gt;. Diferente de soluções tradicionais baseadas em buildpacks (como os do Heroku ou do Paketo), ele utiliza o &lt;strong&gt;Nix&lt;/strong&gt; — um sistema de gerenciamento de pacotes e ambientes declarativos — como alicerce.&lt;/p&gt;

&lt;p&gt;👉 Em termos simples: o Nixpacks inspeciona seu repositório, entende as dependências do projeto (linguagem, pacotes, versões, binários necessários) e gera uma imagem Docker de forma &lt;strong&gt;determinística, reprodutível e otimizada&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Por que o Nixpacks é diferente?
&lt;/h2&gt;

&lt;p&gt;✨ Existem alguns pilares que fazem o Nixpacks se destacar:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Determinismo&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;O Nix garante que o mesmo código irá gerar exatamente o mesmo ambiente, em qualquer máquina.&lt;/li&gt;
&lt;li&gt;Sem “funcionava na minha máquina, mas não no CI”.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Zero Dockerfiles (quando você quiser)&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;O Nixpacks gera automaticamente a configuração de build.&lt;/li&gt;
&lt;li&gt;Você pode customizar, mas não precisa escrever manualmente cada comando.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Imagens enxutas&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;O processo resulta em containers otimizados, com apenas as dependências necessárias.&lt;/li&gt;
&lt;li&gt;Isso reduz o tempo de deploy e os custos de armazenamento/transporte de imagens.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Multilíngue e poliglota&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Suporta Node.js, Python, Go, Rust, PHP, Java, entre outros.&lt;/li&gt;
&lt;li&gt;Também é possível combinar linguagens no mesmo ambiente (ex: Node + Python).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Como funciona na prática?
&lt;/h2&gt;

&lt;p&gt;🔧 O ciclo de uso é simples:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Instalação&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://nixpacks.com/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Build de uma aplicação&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   nixpacks build &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; my-app-image
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Analisa o repositório.&lt;/li&gt;
&lt;li&gt;Identifica linguagem, dependências e scripts de execução.&lt;/li&gt;
&lt;li&gt;Constrói uma imagem Docker otimizada.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Execução do container&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   docker run &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 my-app-image
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Customização (se necessário)&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Adicione um arquivo &lt;code&gt;nixpacks.toml&lt;/code&gt; para declarar versões, dependências extras ou scripts de build.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt; &lt;span class="nn"&gt;[phases.setup]&lt;/span&gt;
 &lt;span class="py"&gt;nixPkgs&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"nodejs-20_x"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"yarn"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

 &lt;span class="nn"&gt;[phases.build]&lt;/span&gt;
 &lt;span class="py"&gt;cmd&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"yarn build"&lt;/span&gt;

 &lt;span class="nn"&gt;[phases.start]&lt;/span&gt;
 &lt;span class="py"&gt;cmd&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"yarn start"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Casos de uso
&lt;/h2&gt;

&lt;p&gt;🌍 O Nixpacks é particularmente valioso em alguns cenários:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Startups e equipes ágeis&lt;/strong&gt;: reduzir tempo gasto com configuração de builds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ambientes poliglotas&lt;/strong&gt;: quando o mesmo serviço precisa conciliar múltiplas linguagens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD&lt;/strong&gt;: garantir reprodutibilidade e consistência em cada pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ambientes isolados e auditáveis&lt;/strong&gt;: segurança e conformidade exigem que dependências sejam claras e controladas.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ferramenta&lt;/th&gt;
&lt;th&gt;Base Tecnológica&lt;/th&gt;
&lt;th&gt;Abordagem&lt;/th&gt;
&lt;th&gt;Pontos Fortes&lt;/th&gt;
&lt;th&gt;Pontos Fracos&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Dockerfile&lt;/td&gt;
&lt;td&gt;Docker&lt;/td&gt;
&lt;td&gt;Imperativa&lt;/td&gt;
&lt;td&gt;Controle total, padrão do mercado&lt;/td&gt;
&lt;td&gt;Verboso, difícil de manter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Buildpacks&lt;/td&gt;
&lt;td&gt;Paketo/Heroku&lt;/td&gt;
&lt;td&gt;Declarativa&lt;/td&gt;
&lt;td&gt;Simplicidade, automação&lt;/td&gt;
&lt;td&gt;Menos flexível, acoplado ao ecossistema&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Nixpacks&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Nix&lt;/td&gt;
&lt;td&gt;Declarativa + Reprodutível&lt;/td&gt;
&lt;td&gt;Determinismo, otimização, poliglota&lt;/td&gt;
&lt;td&gt;Curva de aprendizado do Nix&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Integrações e ecossistema
&lt;/h2&gt;

&lt;p&gt;✨ O Nixpacks pode ser integrado diretamente com:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Railway&lt;/strong&gt; (PaaS que o criou, onde funciona de forma nativa).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker&lt;/strong&gt; (gera imagens compatíveis).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD pipelines&lt;/strong&gt; (GitHub Actions, GitLab CI, CircleCI etc.).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outros provedores de nuvem&lt;/strong&gt;: basta usar a imagem gerada.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Desafios e limitações
&lt;/h2&gt;

&lt;p&gt;Nenhuma tecnologia é perfeita, e com o Nixpacks não é diferente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Curva de aprendizado&lt;/strong&gt;: para customizações mais avançadas, entender Nix é importante — e Nix tem fama de ser complexo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Menos maduro que Dockerfile&lt;/strong&gt;: a comunidade ainda está crescendo e nem todas as linguagens possuem detecção perfeita.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debugging&lt;/strong&gt;: em builds automáticos, às vezes é difícil entender o que exatamente deu errado.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  O futuro do Nixpacks
&lt;/h2&gt;

&lt;p&gt;O Nixpacks aponta para uma &lt;strong&gt;tendência maior&lt;/strong&gt;: a busca por &lt;strong&gt;infraestruturas declarativas, reprodutíveis e otimizadas por padrão&lt;/strong&gt;.&lt;br&gt;
Assim como Terraform transformou a infraestrutura em código, e Kubernetes mudou a forma como orquestramos workloads, o Nixpacks está pavimentando o caminho para um futuro em que &lt;strong&gt;a construção de ambientes não dependa de scripts frágeis&lt;/strong&gt;, mas de declarações confiáveis.&lt;/p&gt;

&lt;p&gt;💡 É possível imaginar um cenário em que ferramentas como o Nixpacks sejam integradas de forma nativa às principais plataformas de deploy, reduzindo drasticamente a fricção entre o código escrito e o serviço rodando em produção.&lt;/p&gt;




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

&lt;p&gt;O &lt;strong&gt;Nixpacks&lt;/strong&gt; é mais do que uma ferramenta de build: é um &lt;strong&gt;manifesto contra o caos dos ambientes imprevisíveis&lt;/strong&gt;.&lt;br&gt;
Ele simplifica a vida do desenvolvedor, garante consistência entre máquinas e servidores, e prepara o terreno para um ciclo de entrega contínua mais estável e confiável.&lt;/p&gt;

&lt;p&gt;🌍 Se você lidera equipes ou projetos que sofrem com divergências entre ambientes, builds demorados ou imagens infladas, vale a pena experimentar o Nixpacks. Talvez você descubra que o futuro dos seus deploys pode ser muito mais simples — e elegante — do que você imagina.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>DTOs no PHP: o alicerce de um backend claro, seguro e escalável</title>
      <dc:creator>Igor Araujo</dc:creator>
      <pubDate>Tue, 09 Sep 2025 17:24:10 +0000</pubDate>
      <link>https://dev.to/igoraraujo/dtos-no-php-o-alicerce-de-um-backend-claro-seguro-e-escalavel-2lmn</link>
      <guid>https://dev.to/igoraraujo/dtos-no-php-o-alicerce-de-um-backend-claro-seguro-e-escalavel-2lmn</guid>
      <description>&lt;p&gt;Quando a gente fala de arquitetura limpa no backend, tem um ingrediente que separa o improviso do profissionalismo: os DTOs. Eles tornam o fluxo de dados previsível, seguro e fácil de evoluir — especialmente em times que querem escalar com excelência e responsabilidade. Abaixo, um guia direto ao ponto, no meu estilo, para você adotar DTOs no seu PHP (com exemplo plug-and-play).&lt;/p&gt;

&lt;h2&gt;
  
  
  1) O que são DTOs (Data Transfer Objects)
&lt;/h2&gt;

&lt;p&gt;DTO é um objeto simples, &lt;strong&gt;somente com dados&lt;/strong&gt;, feito para &lt;strong&gt;transportar informações entre camadas&lt;/strong&gt; (Controller → Use Case/Service → Repository, filas, etc.).&lt;br&gt;
Sem regra de negócio, sem acesso a banco, sem side effects. Apenas um &lt;strong&gt;contrato explícito&lt;/strong&gt; do que entra e do que sai.&lt;/p&gt;
&lt;h2&gt;
  
  
  2) Por que usar DTOs (e por que isso importa)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clareza e contrato&lt;/strong&gt;: o DTO define o formato dos dados. Diminui “adivinhação” e quebra de compatibilidade entre camadas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Imutabilidade&lt;/strong&gt;: com &lt;code&gt;readonly&lt;/code&gt;, você evita mutações silenciosas e bugs difíceis. O que o caso de uso recebeu é o que será processado.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Segurança e governança&lt;/strong&gt;: ao fechar o formato dos dados, você reduz risco de fields “perdidos” ou inputs inesperados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testabilidade&lt;/strong&gt;: é simples criar DTOs em testes e simular cenários sem precisar de Request/Model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evolução controlada&lt;/strong&gt;: novas versões de endpoints/fluxos podem ter &lt;strong&gt;novos DTOs&lt;/strong&gt; (v2, v3…) sem quebrar o legado.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  3) Como usar DTO no PHP “apenas definindo uma classe”
&lt;/h2&gt;

&lt;p&gt;Abaixo está o seu exemplo de DTO — já no padrão moderno do PHP 8.x, com &lt;strong&gt;constructor property promotion&lt;/strong&gt; e &lt;strong&gt;propriedades &lt;code&gt;readonly&lt;/code&gt;&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="kn"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;App\Domain\Entidade\DTO&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;NovaEntidadeDTO&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;__construct&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nv"&gt;$nome&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nv"&gt;$cnpj&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="kt"&gt;array&lt;/span&gt; &lt;span class="nv"&gt;$json&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nv"&gt;$cep&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nv"&gt;$rua&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nv"&gt;$numero&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nv"&gt;$complemento&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nv"&gt;$bairro&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nv"&gt;$cidade&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nv"&gt;$estado&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nv"&gt;$cnpj_correios&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;fromRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kt"&gt;self&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;self&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;nome&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;nome&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;cnpj&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;cnpj&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
            &lt;span class="n"&gt;cep&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;cep&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;rua&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;rua&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;numero&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;numero&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;complemento&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;complemento&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;bairro&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;bairro&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;cidade&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;cidade&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;estado&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;estado&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;cnpj_correios&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;cnpj_correios&lt;/span&gt;
        &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;toArray&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="kt"&gt;array&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="s1"&gt;'nome'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;nome&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'cnpj'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;cnpj&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'json'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'cep'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;cep&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'rua'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;rua&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'numero'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;numero&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'complemento'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;complemento&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'bairro'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;bairro&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'cidade'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;cidade&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'estado'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;estado&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'cnpj_correios'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;cnpj_correios&lt;/span&gt;
        &lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Como integrar no fluxo (exemplo Laravel — mas serve para qualquer stack)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Controller&lt;/strong&gt; (valida, cria o DTO e chama o caso de uso/serviço):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;store&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Request&lt;/span&gt; &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;CriaEntidade&lt;/span&gt; &lt;span class="nv"&gt;$service&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// 1) Validação (exemplo)&lt;/span&gt;
    &lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;validate&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="s1"&gt;'nome'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'string'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="s1"&gt;'cnpj'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'string'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="s1"&gt;'json'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'nullable'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'array'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="s1"&gt;'cep'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'string'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="s1"&gt;'rua'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'string'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="s1"&gt;'numero'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'string'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="s1"&gt;'complemento'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'nullable'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'string'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="s1"&gt;'bairro'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'string'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="s1"&gt;'cidade'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'string'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="s1"&gt;'estado'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'string'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="s1"&gt;'cnpj_correios'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'required'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'string'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;]);&lt;/span&gt;

    &lt;span class="c1"&gt;// 2) Transformação segura&lt;/span&gt;
    &lt;span class="nv"&gt;$dto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;\App\Domain\Entidade\DTO\NovaEntidadeDTO&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;fromRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$request&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// 3) Orquestração de negócio&lt;/span&gt;
    &lt;span class="nv"&gt;$entidade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$service&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;handle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$dto&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;response&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$entidade&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;201&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Service/Use Case&lt;/strong&gt; (consome o DTO e persiste via Model/Repository):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;final&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CriaEntidade&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;handle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;\App\Domain\Entidade\DTO\NovaEntidadeDTO&lt;/span&gt; &lt;span class="nv"&gt;$dto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Persistência simples usando o array do DTO&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;\App\Models\Entidade&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$dto&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;toArray&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Observação prática (Laravel):&lt;/strong&gt; se você tiver um campo do formulário chamado &lt;code&gt;json&lt;/code&gt;, ele pode colidir conceitualmente com &lt;code&gt;$request-&amp;gt;json()&lt;/code&gt; (que é um método). No seu código acima funciona porque você usa &lt;code&gt;$request-&amp;gt;json&lt;/code&gt; como “propriedade”. Se quiser blindar isso, uma alternativa é criar também um &lt;code&gt;fromArray(array $data): self&lt;/code&gt; e passar &lt;code&gt;$request-&amp;gt;validated()&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Dicas para levar ao próximo nível (quando fizer sentido)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Value Objects&lt;/strong&gt;: transformar &lt;code&gt;CNPJ&lt;/code&gt;, &lt;code&gt;CEP&lt;/code&gt; e &lt;code&gt;UF&lt;/code&gt; em tipos próprios (com validação) aumenta a qualidade e reduz bugs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Factories nomeadas&lt;/strong&gt;: &lt;code&gt;NovaEntidadeDTO::fromWebhook(...)&lt;/code&gt;, &lt;code&gt;::fromCli(...)&lt;/code&gt; — ótimas quando as fontes de dados variam.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Versionamento&lt;/strong&gt;: &lt;code&gt;NovaEntidadeV1DTO&lt;/code&gt;, &lt;code&gt;NovaEntidadeV2DTO&lt;/code&gt; ajudam a evoluir contratos sem quebrar integrações.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anotações de static analysis&lt;/strong&gt;: adicione docblocks para o shape de arrays (&lt;code&gt;@var array&amp;lt;string,mixed&amp;gt;&lt;/code&gt;), melhorando insights de Psalm/PHPStan.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Conclusão: DTOs elevam a engenharia — clareza, segurança e escala. Em ambientes corporativos, onde governança e padronização importam, eles criam um vocabulário comum entre produto, dev e negócio. Seguimos construindo com ciência, colaboração e propósito. &lt;/p&gt;

</description>
      <category>php</category>
      <category>programming</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Infraestrutura como Código não é uma escolha técnica. É uma questão de sobrevivência estratégica.</title>
      <dc:creator>Igor Araujo</dc:creator>
      <pubDate>Sat, 17 May 2025 19:39:02 +0000</pubDate>
      <link>https://dev.to/igoraraujo/infraestrutura-como-codigo-nao-e-uma-escolha-tecnica-e-uma-questao-de-sobrevivencia-estrategica-4a76</link>
      <guid>https://dev.to/igoraraujo/infraestrutura-como-codigo-nao-e-uma-escolha-tecnica-e-uma-questao-de-sobrevivencia-estrategica-4a76</guid>
      <description>&lt;p&gt;Em um cenário onde a agilidade deixou de ser diferencial para se tornar pré-requisito, ainda existem empresas que tratam infraestrutura como um custo fixo, estático, centralizado — e, muitas vezes, emocionalmente preso à stack de um único fornecedor.&lt;/p&gt;

&lt;p&gt;Essa escolha, além de técnica, é cultural. E, quase sempre, onerosa.&lt;/p&gt;

&lt;p&gt;Infrastructure as Code (IaC) não é sobre versionar configurações.&lt;br&gt;
É sobre versionar decisões de negócio.&lt;br&gt;
É sobre transformar infraestrutura em linguagem de produto.&lt;br&gt;
É sobre dar a sua infra, a mesma adaptabilidade que o mercado exige da sua estratégia.&lt;/p&gt;

&lt;p&gt;A pergunta não é mais “por que usar IaC?”&lt;br&gt;
A pergunta é:&lt;/p&gt;

&lt;p&gt;Quantas decisões financeiras, técnicas e operacionais sua empresa está deixando de tomar por não conseguir abstrair a própria infraestrutura?&lt;/p&gt;

&lt;p&gt;Porque enquanto sua equipe debate qual cloud é "melhor", a concorrência já está rodando workloads em múltiplos provedores, otimizando custo e latência em tempo real.&lt;/p&gt;

&lt;p&gt;Uma infraestrutura agnóstica não é luxo. É alavanca.&lt;br&gt;
Workload de alto throughput? Roda no provedor mais barato por GB/s.&lt;/p&gt;

&lt;p&gt;Funções específicas com melhor suporte em outro ambiente? Roda lá.&lt;/p&gt;

&lt;p&gt;Região mais próxima do usuário? Você escolhe. Não é a cloud que decide.&lt;/p&gt;

&lt;p&gt;Quem domina a infraestrutura como código, domina o custo, o risco e a mudança.&lt;br&gt;
E em um cenário onde tudo muda o tempo todo, isso equivale a dominar o jogo.&lt;/p&gt;

&lt;p&gt;O problema não é a nuvem.&lt;br&gt;
É a falta de soberania sobre ela.&lt;/p&gt;

&lt;p&gt;Sem IaC, sua empresa não tem flexibilidade.&lt;br&gt;
Sem IaC, a migração custa caro, demora, trava deploys e desincentiva inovação.&lt;br&gt;
Sem IaC, o custo real não aparece na fatura da cloud — aparece na inércia da estratégia.&lt;/p&gt;

&lt;p&gt;Otimização não é uma planilha. É arquitetura.&lt;br&gt;
Empresas que querem falar de FinOps, mas não abstraem infraestrutura, estão caindo na mesma armadilha de sempre:&lt;br&gt;
cortar sem entender, economizar sem medir, reagir sem planejar.&lt;/p&gt;

&lt;p&gt;IaC não é sobre “como rodar melhor”.&lt;br&gt;
É sobre “onde rodar melhor”.&lt;br&gt;
É sobre liberdade. E liberdade, no contexto de tecnologia, é custo controlado.&lt;/p&gt;

&lt;p&gt;A infraestrutura deixou de ser suporte.&lt;br&gt;
Ela virou estratégia.&lt;/p&gt;

&lt;p&gt;E quem ainda não entendeu isso, vai continuar pagando caro por aquilo que deveria estar controlando.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A falsa sensação de inovação: como projetos de IA mal conduzidos estão reforçando velhas ineficiências</title>
      <dc:creator>Igor Araujo</dc:creator>
      <pubDate>Wed, 14 May 2025 22:11:33 +0000</pubDate>
      <link>https://dev.to/igoraraujo/a-falsa-sensacao-de-inovacao-como-projetos-de-ia-mal-conduzidos-estao-reforcando-velhas-1jfa</link>
      <guid>https://dev.to/igoraraujo/a-falsa-sensacao-de-inovacao-como-projetos-de-ia-mal-conduzidos-estao-reforcando-velhas-1jfa</guid>
      <description>&lt;p&gt;Não é porque você usa IA que sua empresa se tornou inovadora.&lt;br&gt;
Na verdade, em muitos casos, a Inteligência Artificial está apenas automatizando ineficiências antigas com uma interface moderna.&lt;/p&gt;

&lt;p&gt;Projetos que prometem disrupção acabam, muitas vezes, apenas acelerando processos que já não faziam sentido.&lt;br&gt;
A lógica da produtividade é mantida — só que com dashboards animados, fluxos de decisão opacos e modelos que ninguém sabe exatamente como (ou por que) estão rodando.&lt;/p&gt;

&lt;p&gt;O sintoma mais comum?&lt;br&gt;
Organizações que celebram o uso de IA, mas seguem reféns de decisões centralizadas, dados desorganizados e silos de informação.&lt;/p&gt;

&lt;p&gt;Automatizar sem repensar processos é como pavimentar uma estrada que leva ao lugar errado — só que mais rápido, com menos atrito e mais custo de nuvem.&lt;/p&gt;

&lt;p&gt;Alguns exemplos reais (e dolorosos):&lt;br&gt;
Times de atendimento treinados para depender de respostas geradas por IA, mas sem autonomia para validar ou adaptar.&lt;/p&gt;

&lt;p&gt;Sistemas de recomendação que reforçam viéses de negócio ao invés de questioná-los.&lt;/p&gt;

&lt;p&gt;Geração automática de relatórios que ninguém lê, mas que seguem ocupando pipelines de dados e horas de reunião.&lt;/p&gt;

&lt;p&gt;Estamos otimizando a superfície. Mas ignorando a estrutura.&lt;/p&gt;

&lt;p&gt;A inovação de verdade exige desconforto.&lt;br&gt;
Ela exige repensar modelos mentais, estruturas de poder, rituais de decisão.&lt;br&gt;
E isso não vem no pacote do modelo pré-treinado.&lt;/p&gt;

&lt;p&gt;Não é sobre IA. É sobre a coragem de rever o que a IA está expondo.&lt;br&gt;
Sua cultura de dados, seu fluxo de valor, suas métricas de sucesso.&lt;/p&gt;

&lt;p&gt;A pergunta que incomoda — e precisa ser feita:&lt;br&gt;
Quantos dos seus projetos de IA estão realmente criando valor… e quantos estão apenas te deixando ocupado?&lt;/p&gt;

&lt;p&gt;Se o resultado final é “mais um processo automatizado que ninguém entende e poucos usam”, talvez você não esteja inovando.&lt;br&gt;
Talvez só tenha terceirizado sua complacência para um algoritmo.&lt;/p&gt;

&lt;p&gt;A IA pode ser o espelho mais brutal da ineficiência institucional.&lt;br&gt;
O problema não é a tecnologia. É o que ela está revelando — e o que você está escolhendo ignorar.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A Inteligência Artificial Generativa não ameaça empregos. Ela ameaça estruturas empresariais obsoletas.</title>
      <dc:creator>Igor Araujo</dc:creator>
      <pubDate>Tue, 13 May 2025 19:50:07 +0000</pubDate>
      <link>https://dev.to/igoraraujo/a-inteligencia-artificial-generativa-nao-ameaca-empregos-ela-ameaca-estruturas-empresariais-3il4</link>
      <guid>https://dev.to/igoraraujo/a-inteligencia-artificial-generativa-nao-ameaca-empregos-ela-ameaca-estruturas-empresariais-3il4</guid>
      <description>&lt;p&gt;Muito já se discutiu sobre as funcionalidades da IA Generativa: modelos de linguagem, engenharia de prompts, automação de conteúdo. Mas o verdadeiro ponto de inflexão não está na tecnologia em si — e sim na sua capacidade de subverter modelos de operação que antes pareciam inquestionáveis.&lt;/p&gt;

&lt;p&gt;Não se trata mais de "adotar IA" como ferramenta, mas de compreender a IA como um agente de transformação organizacional.&lt;/p&gt;

&lt;p&gt;Alguns sinais são evidentes:&lt;br&gt;
Reuniões que antes geravam atas são hoje analisadas em tempo real, com recomendações geradas automaticamente para subsidiar decisões.&lt;/p&gt;

&lt;p&gt;Propostas comerciais que levavam horas para serem montadas agora podem ser redigidas em minutos, com base em dados contextuais e históricos de negociação.&lt;/p&gt;

&lt;p&gt;Campanhas de marketing não precisam mais ser montadas do zero: são concebidas, testadas e ajustadas por sistemas autônomos com base em comportamento e intenção.&lt;/p&gt;

&lt;p&gt;A IA Generativa não está apenas automatizando processos.&lt;br&gt;
Ela está redefinindo a noção de produtividade, escopo de trabalho e tempo de resposta.&lt;/p&gt;

&lt;p&gt;E, talvez mais importante: está alterando o que esperamos das organizações e dos profissionais que nelas atuam.&lt;/p&gt;

&lt;p&gt;O risco real não é ser substituído pela IA.&lt;br&gt;
É ser superado por quem a entendeu como fundamento estratégico — e não como um simples recurso auxiliar.&lt;/p&gt;

&lt;p&gt;Não é mais suficiente usar IA.&lt;br&gt;
É preciso pensar com IA, projetar estruturas com IA, e redesenhar valor com IA.&lt;/p&gt;

&lt;p&gt;A pergunta, então, não é mais “como aplicar essa tecnologia?”.&lt;br&gt;
A pergunta que se impõe é:&lt;/p&gt;

&lt;p&gt;Sua organização está preparada para repensar seus fundamentos operacionais à luz da Inteligência Artificial Generativa — ou será refém de sua própria inércia?&lt;/p&gt;

&lt;p&gt;📌 O debate precisa sair do nível técnico e alcançar o nível estratégico.&lt;br&gt;
A IA Generativa não é uma revolução do como. É uma disrupção do por que e para quem as coisas são feitas.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
    </item>
  </channel>
</rss>
