<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tecnologia & Viagens — Infraestrutura</title>
    <description>Blog sobre tecnologia, infraestrutura e automação para quem viaja e constrói.</description>
    <link>https://guilherme.stracini.com.br/blog/</link>
    <atom:link href="https://guilherme.stracini.com.br/blog/feed/infraestrutura.xml" rel="self" type="application/rss+xml"/>
    <language>pt-BR</language>
    
    <item>
      <title>Deploy de aplicação C# .NET 10 em VPS Ubuntu com Nginx, SSL e rolling deploy</title>
      <description>&lt;p class=&quot;lead&quot;&gt;Guia completo para fazer o deploy de uma aplicação C# .NET 10 em uma VPS Ubuntu na OCI — com duas instâncias rodando em paralelo, load balancing no Nginx, rolling deploy sem downtime via GitHub Actions e rsync, e SSL automático pelo Certbot.&lt;/p&gt;
</description>
      <pubDate>Tue, 23 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://guilherme.stracini.com.br/blog/artigos/deploy-csharp-dotnet10-vps-nginx-load-balancing-rolling-deploy/</link>
      <guid isPermaLink="true">https://guilherme.stracini.com.br/blog/artigos/deploy-csharp-dotnet10-vps-nginx-load-balancing-rolling-deploy/</guid>
    </item>
    
    <item>
      <title>Playing with Docker: NGINX, Apache, RabbitMQ, MailHog, MySQL/MariaDB</title>
      <description>&lt;p class=&quot;lead&quot;&gt;Running &lt;code&gt;docker compose up&lt;/code&gt; and having a fully working PHP development environment — with a web server, database, cache layer, message queue and email testing — in under two minutes. No global installs, no version conflicts, no &quot;works on my machine&quot;. This guide walks through every service, explains what each one does and provides a production-grade &lt;code&gt;docker-compose.yml&lt;/code&gt; with healthchecks included.&lt;/p&gt;
</description>
      <pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://guilherme.stracini.com.br/blog/artigos/playing-with-docker-nginx-apache-rabbitmq-mailhog-mysql/</link>
      <guid isPermaLink="true">https://guilherme.stracini.com.br/blog/artigos/playing-with-docker-nginx-apache-rabbitmq-mailhog-mysql/</guid>
    </item>
    
    <item>
      <title>Deploying a C# Application to Ubuntu VPS with Nginx, SSL and Load Balancing</title>
      <description>&lt;p class=&quot;lead&quot;&gt;A step-by-step guide for deploying a .NET application — REST API, Swagger, HealthChecks and a long-running background worker — to an OCI Ubuntu VPS with Nginx acting as reverse proxy and load balancer, SSL provided by Let&apos;s Encrypt via Certbot.&lt;/p&gt;
</description>
      <pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate>
      <link>https://guilherme.stracini.com.br/blog/artigos/deploying-csharp-application-ubuntu-vps-nginx-ssl-load-balancing/</link>
      <guid isPermaLink="true">https://guilherme.stracini.com.br/blog/artigos/deploying-csharp-application-ubuntu-vps-nginx-ssl-load-balancing/</guid>
    </item>
    
    <item>
      <title>Deploying a PHP Application to Ubuntu VPS</title>
      <description>&lt;p class=&quot;lead&quot;&gt;A step-by-step guide for deploying a long-running PHP application (with optional WebSocket support) to an Ubuntu VPS, using GitHub Actions for CI/CD.&lt;/p&gt;
</description>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://guilherme.stracini.com.br/blog/artigos/deploying-a-php-application-to-ubuntu-vps/</link>
      <guid isPermaLink="true">https://guilherme.stracini.com.br/blog/artigos/deploying-a-php-application-to-ubuntu-vps/</guid>
    </item>
    
    <item>
      <title>Envio de SMS pela Internet: Da API ao Smartphone como Gateway</title>
      <description>&lt;p class=&quot;lead&quot;&gt;Seja para notificações de sistemas, alertas de monitoramento, autenticação em dois fatores ou automações criativas durante uma viagem, enviar um SMS pela internet é uma necessidade que aparece cedo ou tarde na vida de qualquer desenvolvedor. As opções vão do pragmático ao surpreendentemente artesanal.&lt;/p&gt;
</description>
      <pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://guilherme.stracini.com.br/blog/artigos/envio-sms-internet/</link>
      <guid isPermaLink="true">https://guilherme.stracini.com.br/blog/artigos/envio-sms-internet/</guid>
    </item>
    
    <item>
      <title>Como Automatizar a Sincronização Entre um Repositório Git Local e um Servidor (S)FTP</title>
      <description>&lt;p class=&quot;lead&quot;&gt;Em muitos ambientes corporativos — especialmente em estruturas legadas ou altamente restritas — o uso de Git hospedado (GitHub, GitLab, Bitbucket) ou pipelines de CI/CD é simplesmente proibido. Mesmo assim, o desenvolvimento continua acontecendo, e manter arquivos atualizados no servidor pode se transformar em um trabalho cansativo, repetitivo e propenso a erros.&lt;/p&gt;
</description>
      <pubDate>Fri, 12 Dec 2025 00:00:00 +0000</pubDate>
      <link>https://guilherme.stracini.com.br/blog/artigos/como-automatizar-sincronizacao-git-sftp/</link>
      <guid isPermaLink="true">https://guilherme.stracini.com.br/blog/artigos/como-automatizar-sincronizacao-git-sftp/</guid>
    </item>
    
    <item>
      <title>Should You Use UUIDs as Primary Keys? Performance Myths, Real-World Trade-Offs, and the Ideal Architecture</title>
      <description>&lt;p class=&quot;lead&quot;&gt;Database schema design is always full of trade-offs, but few debates are as persistent as the one around &lt;strong&gt;UUIDs vs. numeric primary keys&lt;/strong&gt;. If you&apos;ve ever wondered whether a UUID primary key actually slows down your database — and what to do about it — this post is for you.&lt;/p&gt;
</description>
      <pubDate>Thu, 11 Dec 2025 00:00:00 +0000</pubDate>
      <link>https://guilherme.stracini.com.br/blog/artigos/should-you-use-uuids-as-primary-keys/</link>
      <guid isPermaLink="true">https://guilherme.stracini.com.br/blog/artigos/should-you-use-uuids-as-primary-keys/</guid>
    </item>
    
    <item>
      <title>Criando uma VPN grátis com OCI (Oracle Cloud Infrastructure)</title>
      <description>&lt;p class=&quot;lead&quot;&gt;Moro fora do Brasil e, em diversas situações, preciso acessar serviços brasileiros que bloqueiam conexões vindas do exterior por questões de segurança. Foi pesquisando uma solução gratuita que descobri como usar uma VM do &lt;strong&gt;OCI (Oracle Cloud Infrastructure)&lt;/strong&gt; para instalar o &lt;strong&gt;WireGuard&lt;/strong&gt; ou o &lt;strong&gt;OpenVPN&lt;/strong&gt; via &lt;strong&gt;PiVPN&lt;/strong&gt; e conseguir, sem pagar nada, um endereço de IP no país que eu precisar.&lt;/p&gt;
</description>
      <pubDate>Wed, 13 Mar 2024 00:00:00 +0000</pubDate>
      <link>https://guilherme.stracini.com.br/blog/artigos/criando-uma-vpn-gratis-com-oci-oracle-cloud-infrastructure/</link>
      <guid isPermaLink="true">https://guilherme.stracini.com.br/blog/artigos/criando-uma-vpn-gratis-com-oci-oracle-cloud-infrastructure/</guid>
    </item>
    
    <item>
      <title>AppVeyor vs GitHub Actions: A Comparative Look at CI/CD Excellence</title>
      <description>&lt;p class=&quot;lead&quot;&gt;Are you interested in optimizing your development workflow but unsure whether to choose AppVeyor or GitHub Actions? In this post I compare both free tools to improve your CI/CD workflow and DevOps culture for personal, freelancer, or professional projects.&lt;/p&gt;
</description>
      <pubDate>Thu, 22 Feb 2024 00:00:00 +0000</pubDate>
      <link>https://guilherme.stracini.com.br/blog/artigos/appveyor-vs-github-actions/</link>
      <guid isPermaLink="true">https://guilherme.stracini.com.br/blog/artigos/appveyor-vs-github-actions/</guid>
    </item>
    
    <item>
      <title>RabbitMQ gratuito: Potencialize sua arquitetura de mensageria sem custos</title>
      <description>&lt;p class=&quot;lead&quot;&gt;Descubra como tirar proveito do poder da mensageria com o RabbitMQ gratuitamente. Neste artigo explico como usar o RabbitMQ ou LavinMQ de graça, caso você não possua acesso a um servidor dedicado ou VPS para instalação.&lt;/p&gt;
</description>
      <pubDate>Wed, 21 Feb 2024 00:00:00 +0000</pubDate>
      <link>https://guilherme.stracini.com.br/blog/artigos/rabbitmq-gratuito-cloudamqp/</link>
      <guid isPermaLink="true">https://guilherme.stracini.com.br/blog/artigos/rabbitmq-gratuito-cloudamqp/</guid>
    </item>
    
    <item>
      <title>Database migration with GitHub Actions</title>
      <description>&lt;p class=&quot;lead&quot;&gt;Database schema changes are one of the riskiest parts of any deployment. A migration applied twice, out of order, or missing entirely can corrupt data or take an application offline. In this post I walk through a GitHub Action I built to manage versioned SQL migrations across multiple database drivers — with dry-run preview, SHA-256 checksums and integrity checks, all without an ORM or a migration framework dependency.&lt;/p&gt;
</description>
      <pubDate>Thu, 14 Dec 2023 00:00:00 +0000</pubDate>
      <link>https://guilherme.stracini.com.br/blog/artigos/database-migration-with-github-actions/</link>
      <guid isPermaLink="true">https://guilherme.stracini.com.br/blog/artigos/database-migration-with-github-actions/</guid>
    </item>
    
    <item>
      <title>Using GitHub Actions to create a .NET Framework pipeline: Build, test, and deploy</title>
      <description>&lt;p class=&quot;lead&quot;&gt;In this article we cover the CI/CD process of a .NET Framework project using GitHub Actions to build, test, and run — from the first workflow file to a complete automated pipeline.&lt;/p&gt;
</description>
      <pubDate>Sat, 12 Aug 2023 00:00:00 +0000</pubDate>
      <link>https://guilherme.stracini.com.br/blog/artigos/using-github-actions-to-create-a-net-framework-pipeline-build-test-and-deploy/</link>
      <guid isPermaLink="true">https://guilherme.stracini.com.br/blog/artigos/using-github-actions-to-create-a-net-framework-pipeline-build-test-and-deploy/</guid>
    </item>
    
    <item>
      <title>Testes automatizados: Os diferentes tipos de testes de software</title>
      <description>&lt;p class=&quot;lead&quot;&gt;Veja neste artigo os diferentes tipos de testes automatizados que existem.&lt;/p&gt;
</description>
      <pubDate>Mon, 17 Jan 2022 00:00:00 +0000</pubDate>
      <link>https://guilherme.stracini.com.br/blog/artigos/testes-automatizados-os-diferentes-tipos-de-testes-de-software/</link>
      <guid isPermaLink="true">https://guilherme.stracini.com.br/blog/artigos/testes-automatizados-os-diferentes-tipos-de-testes-de-software/</guid>
    </item>
    
  </channel>
</rss>
