<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Will Peixoto Blog]]></title><description><![CDATA[Arquitetura event-driven e cloud-native com foco em resiliência, performance e custo. Posts curtos, exemplos práticos e decisões que escalam.]]></description><link>https://willpeixoto.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1759172853732/3b37571e-8da1-454f-b2c1-05cd3376f6e6.png</url><title>Will Peixoto Blog</title><link>https://willpeixoto.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Apr 2026 02:33:41 GMT</lastBuildDate><atom:link href="https://willpeixoto.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Resiliência em Arquitetura: A Decisão é Estratégica, não apenas Técnica]]></title><description><![CDATA[Depois de um outage grande como o que vimos recentemente na AWS, a fumaça sobe e, invariavelmente, surgem as mesmas perguntas que assombram CTOs e arquitetos:

Deveríamos estar em multi-região?” ou pior (e até um pouco nostálgica) — “Será que devería...]]></description><link>https://willpeixoto.dev/resiliencia-custo-ha-multi-regiao-ou-on-premise</link><guid isPermaLink="true">https://willpeixoto.dev/resiliencia-custo-ha-multi-regiao-ou-on-premise</guid><category><![CDATA[AWS]]></category><category><![CDATA[Cloud]]></category><category><![CDATA[architecture]]></category><category><![CDATA[Reliability]]></category><category><![CDATA[Disaster recovery]]></category><dc:creator><![CDATA[Willian Peixoto]]></dc:creator><pubDate>Thu, 23 Oct 2025 04:49:21 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1761193941123/ba8f7310-0ffe-4443-a7cc-75d2c3b06f79.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Depois de um <em>outage</em> grande como o que vimos recentemente na AWS, a fumaça sobe e, invariavelmente, surgem as mesmas perguntas que assombram <em>CTOs</em> e arquitetos:</p>
<blockquote>
<p><em>Deveríamos estar em multi-região?” ou pior (e até um pouco nostálgica) — “Será que deveríamos voltar para o on-premise?”</em></p>
</blockquote>
<p><strong>A verdade é que a resposta certa raramente é técnica.</strong></p>
<p><strong>Ela é, antes de tudo, estratégica.</strong></p>
<p>Como o próprio <strong>Werner Vogels (CTO da AWS)</strong> costuma cravar em suas palestras:</p>
<blockquote>
<p><em>“Everything fails, all the time.”</em> (Tudo falha, o tempo todo).</p>
</blockquote>
<p>E é exatamente isso. A questão central não é <strong>se</strong> vai falhar, é <strong>quando</strong> vai falhar e <strong>como</strong> você estará preparado quando esse momento inevitável chegar. Porque ele virá. Quer você esteja na nuvem, no <em>on-premises</em> ou em uma complexa arquitetura <em>multi-cloud</em>.</p>
<p>O que realmente diferencia times resilientes não é a ausência de falhas, mas a <strong>velocidade, clareza e eficácia</strong> com que respondem e se recuperam.</p>
<p>E é aí que entra a verdadeira maturidade arquitetural: resiliência não é sobre escolher "multi-região" ou "on-premises" — é sobre <strong>entender o risco inerente, documentar a escolha de forma transparente e reagir com um plano</strong>.</p>
<hr />
<h3 id="heading-1-o-contexto-por-tras-da-pergunta-o-paradoxo-da-falha-visivel"><strong>1. O Contexto por Trás da Pergunta: O Paradoxo da Falha Visível</strong></h3>
<p>Toda vez que há um grande <em>outage</em>, noto que times técnicos e executivos tendem a se dividir entre duas reações extremas, movidas pelo medo e pela pressão:</p>
<ul>
<li><p>“Precisamos ser multi-região urgente! O custo é secundário!”</p>
</li>
<li><p>“Tá vendo? Cloud não é confiável. Devíamos ter ficado on-premise, onde tínhamos o controle!”</p>
</li>
</ul>
<p>Ambos os extremos são atalhos perigosos.</p>
<p>Multi-região não é uma vacina contra a indisponibilidade, e voltar para o <em>on-premise</em> não é sinônimo de controle (apenas transfere a complexidade de manutenção).</p>
<blockquote>
<p><strong>Ponto de Reflexão Crucial:</strong> A nuvem não falha mais do que um <em>data center</em> tradicional — ela apenas falha de forma mais <strong>visível, compartilhada e, ironicamente, democrática</strong>. Na AWS, os problemas escalam globalmente e se tornam <em>trending topics</em> em minutos. No <em>on-premise</em>, eles ficam escondidos atrás de <em>logs</em> dispersos, longos tempos de reparo e, muitas vezes, apenas impactam você. <strong>Honestamente, você acredita que sua empresa tem uma capacidade superior à AWS (ou a qualquer grande <em>cloud provider</em>) para gerenciar a segurança física, o cabeamento, a energia, o resfriamento e, principalmente, a <em>resiliência</em> de uma infraestrutura em escala global?</strong></p>
</blockquote>
<p>Migrar ou evoluir a arquitetura, no fundo, não é sobre “jogar tudo fora” ou “comprar o hype”. É sobre <strong>aproveitar o que o legado tem de bom e eliminar o que limita o crescimento</strong>.</p>
<p>Não é uma briga maniqueísta de <em>“Cloud vs. Data Center”</em>. É um jogo estratégico de <strong>Resiliência Consciente vs. Zona de Conforto</strong>.</p>
<hr />
<h3 id="heading-2-custo-vs-continuidade-a-economia-por-tras-dos-9s"><strong>2. Custo vs Continuidade: A Economia por Trás dos 9s</strong></h3>
<p>No mundo da infraestrutura, cada "9" adicional no SLA (Service Level Agreement) não apenas custa, mas custa <strong>exponencialmente</strong> mais.</p>
<p>Para ilustrar o impacto real de cada nível de disponibilidade, veja o <em>downtime</em> máximo permitido por ano:</p>
<ul>
<li><p><strong>99% (Dois 9s):</strong> Cerca de <strong>3,6 dias</strong> fora do ar por ano. <em>Custo e complexidade:</em> Base (Custo 1x).</p>
</li>
<li><p><strong>99,9% (Três 9s):</strong> Cerca de <strong>8 horas e 43 minutos</strong> fora do ar por ano. <em>Custo e complexidade:</em> Custo 1,5x a 2x o ambiente base.</p>
</li>
<li><p><strong>99,99% (Quatro 9s):</strong> Cerca de <strong>52 minutos</strong> fora do ar por ano. <em>Custo e complexidade:</em> Custo 2x a 3x. Exige Multi-AZ e automação forte.</p>
</li>
<li><p><strong>99,999% (Cinco 9s):</strong> Cerca de <strong>5 minutos</strong> fora do ar por ano. <em>Custo e complexidade:</em> Custo 3x+. Exige automação impecável e, muitas vezes, arquitetura Multi-Region.</p>
</li>
</ul>
<p>Cada salto de nível exige não só duplicar ou triplicar a infraestrutura, mas também exige <strong>revisão e sofisticação operacional</strong>. E o pulo do gato é que cada <em>9</em> adicional precisa ser justificado em <strong>ROI (Retorno Sobre o Investimento)</strong>, e nunca em orgulho técnico.</p>
<blockquote>
<p>📢 <strong>O Fator Inegociável: Regulamentação</strong> Para setores como financeiro, saúde (LGPD) ou telecomunicações, a escolha do SLA nem sempre é puramente econômica. Muitas vezes, o requisito de disponibilidade (e a capacidade de recuperação de dados, o RPO) é <strong>imposto por lei ou normas setoriais</strong>. Nesses casos, o debate não é <em>se</em> podemos pagar, mas sim <em>como</em> atingir o SLA legalmente obrigatório com o menor custo e complexidade possíveis, pois o custo da <strong>multa regulatória</strong> supera qualquer economia técnica.</p>
</blockquote>
<p><strong>Regra Prática de Complexidade:</strong></p>
<ul>
<li><p><strong>Alta disponibilidade (dentro de uma única região)</strong>: Pode custar 1,5x a 2x o ambiente base.</p>
</li>
<li><p><strong>Multi-Região (Active/Passive)</strong>: Pode custar 2,5x a 3x.</p>
</li>
<li><p><strong>Multi-Cloud (Active/Active)</strong>: Quase nunca reduz risco. Pelo contrário, normalmente aumenta a <strong>superfície de falha</strong> e a complexidade operacional.</p>
</li>
</ul>
<hr />
<h3 id="heading-3-decisoes-conscientes-a-virtude-dos-adrs"><strong>3. Decisões Conscientes: A Virtude dos ADRs</strong></h3>
<p>Toda escolha arquitetural é um compromisso baseado em um <strong>contexto</strong> — e esse contexto é volátil. Sem registro, o contexto se perde, o que nos condena a refazer decisões, revisitar discussões e incorrer em custos desnecessários.</p>
<p>É aí que a prática dos <strong>ADRs (Architecture Decision Records)</strong> se torna crucial. Não são documentos longos de 50 páginas, mas sim documentos curtos que capturam a <strong>decisão</strong>, o <strong>motivo</strong> e o <strong>risco assumido</strong> em um dado momento.</p>
<p><code>Exemplo de ADR (com foco no risco assumido):</code></p>
<pre><code class="lang-markdown"><span class="hljs-section"># ADR-014: Não usar replicação multi-região no MVP</span>

Contexto:
<span class="hljs-bullet">-</span> Tráfego atual <span class="xml"><span class="hljs-tag">&lt; <span class="hljs-attr">10</span> <span class="hljs-attr">req</span>/<span class="hljs-attr">s.</span>
<span class="hljs-attr">-</span> <span class="hljs-attr">O</span> <span class="hljs-attr">custo</span> <span class="hljs-attr">de</span> <span class="hljs-attr">replica</span>çã<span class="hljs-attr">o</span> <span class="hljs-attr">multi-regi</span>ã<span class="hljs-attr">o</span> é <span class="hljs-attr">estimado</span> <span class="hljs-attr">em</span> &gt;</span></span> 3x o custo atual.

Decisão:
Manter arquitetura single-region (usando Multi-AZ para HA intra-região),
com backup cross-region diário.

Gatilho de Revisão:
Após atingir 100 req/s médios ou quando o SLA atual (99,95%) gerar
impacto de negócio.

Risco/Consequência Aceita:
Risco de downtime total do serviço em caso de um outage que afete a
região inteira (RTO estimado em 4 horas para recuperação cross-region).
</code></pre>
<p>Um ADR não evita a falha. Mas evita que a falha pegue o time de surpresa, pois o risco foi mapeado, assumido e justificado pelo negócio. É o mapa para as futuras discussões.</p>
<hr />
<h3 id="heading-4-resiliencia-seletiva-nem-tudo-precisa-de-ha-e-tudo-bem"><strong>4. Resiliência Seletiva: Nem Tudo Precisa de HA (e tudo bem)</strong></h3>
<p>A resiliência seletiva é uma <strong>virtude de economia e clareza</strong>. Não é todo serviço que precisa de redundância global. Alocar recursos finitos (dinheiro e atenção de engenharia) em redundância desnecessária é um dos grandes desperdícios em arquitetura.</p>
<p><strong>Priorize Alta Disponibilidade (HA) apenas para o que realmente importa:</strong></p>
<ul>
<li><p><strong>Funções de Receita Direta:</strong> Componentes cruciais para a transação financeira (ex: <strong>checkout</strong> e <strong>APIs de pagamento</strong>).</p>
</li>
<li><p><strong>Jornada Crítica do Cliente:</strong> Funções que impedem o uso do valor central do produto (ex: <strong>login</strong> ou <strong>catálogo principal</strong>).</p>
</li>
<li><p><strong>Risco Regulatório e Legal:</strong> Serviços onde a falha gera <strong>multas legais</strong> ou quebra um <strong>SLA contratual penalizador</strong>.</p>
</li>
<li><p><strong>Integridade de Dados Críticos:</strong> Onde a perda de dados viola o <strong>RPO</strong> aceitável (ex: sistemas de retenção de dados obrigatórios).</p>
</li>
</ul>
<p>O resto? Pode ser restaurado via um <em>recovery playbook</em> bem definido. <em>Jobs batch</em>, sistemas internos de retaguarda, e <em>dashboards</em> podem tolerar minutos (ou até horas) de inatividade — desde que o plano de reprocessamento seja claro.</p>
<blockquote>
<p><strong>Alta disponibilidade sem propósito é como instalar um airbag em uma bicicleta.</strong> É uma solução sofisticada para um problema que não existe naquele contexto.</p>
</blockquote>
<hr />
<h3 id="heading-5-gerenciado-isento-de-falhas-a-mentalidade-serverless"><strong>5. Gerenciado != Isento de Falhas: A Mentalidade Serverless</strong></h3>
<p>Um erro comum é acreditar que usar serviços <em>serverless</em> (Lambda, DynamoDB, SQS, EventBridge) é sinônimo de imunidade a falhas. Não é.</p>
<p>A falha vai vir — e, com frequência, de onde você menos espera, pois o paradigma <em>serverless</em> muda a <strong>superfície de risco</strong>.</p>
<p>O ponto chave é:</p>
<p>Serviços gerenciados reduzem a <strong>superfície operacional</strong> (você não gerencia OS, patching ou capacidade), mas <strong>não substituem o bom <em>design</em> e preparo</strong>.</p>
<p>Durante o último <em>outage</em>, houve aplicações 100% <em>serverless</em> que ficaram indisponíveis — porque dependiam de componentes críticos (como uma tabela DynamoDB) <strong>na mesma Zona de Disponibilidade (AZ)</strong>, ou porque o código não estava preparado para um <em>retry</em> eficiente.</p>
<blockquote>
<p><strong>A Resiliência Real não vem da AWS. Vem da Arquitetura que você desenha <em>em cima</em> dela.</strong></p>
</blockquote>
<hr />
<h3 id="heading-6-a-decisao-e-do-negocio-a-clareza-e-do-arquiteto"><strong>6. A Decisão é do Negócio — A Clareza é do Arquiteto</strong></h3>
<p>A diferença entre "ter opinião" e "ter influência" está em sua capacidade de traduzir a complexidade técnica em <strong>clareza estratégica</strong>. Seu papel não é assustar o <em>board</em> com jargões, mas sim dar a eles a visibilidade necessária para decidir com consciência.</p>
<p>Minha experiência me ensinou que a maturidade de um time pode ser medida justamente por essa habilidade de fazer a pergunta certa:</p>
<p>❓ Onde está a Maturidade do Seu Time?</p>
<p><strong><em>Times Imaturos Focam na Ferramenta:</em></strong></p>
<ul>
<li><p>Perguntam: <strong>"Qual <em>stack</em> resolve isso?"</strong></p>
</li>
<li><p>Perguntam: <strong>"Devemos usar K8S ou <em>Serverless</em>?"</strong></p>
</li>
<li><p>Perguntam: <strong>"O que a Netflix faz?"</strong></p>
</li>
</ul>
<p><strong><em>Times Maduros Focam no Risco e no Negócio:</em></strong></p>
<ul>
<li><p>Perguntam: <strong>"Qual risco estamos dispostos a aceitar por esse custo?"</strong></p>
</li>
<li><p>Perguntam: <strong>"Qual é o RTO/RPO que o cliente final exige deste serviço?"</strong></p>
</li>
<li><p>Perguntam: <strong>"O que o nosso negócio precisa para sobreviver a um desastre?"</strong></p>
</li>
</ul>
<p>O resultado é que dois times podem usar exatamente a mesma <strong>CLOUD</strong> — um escala com previsibilidade, o outro vive em modo pânico. A diferença não é a <em>cloud</em>. É o nível de entendimento, documentação e humildade técnica sobre as decisões tomadas.</p>
<blockquote>
<p><strong>A Armadilha Comum:</strong> Quem nunca ouviu de um executivo: "Decisões técnicas são com o time de Arquitetura"? Ele está, na verdade, transferindo a responsabilidade pela definição do <strong>risco de negócio</strong>. Seu time define o <strong>COMO</strong> (a <em>stack</em>), mas o Negócio define o <strong>QUANTO</strong> (o RTO e o RPO aceitáveis). É seu papel <strong>devolver a pergunta</strong> para que a decisão de risco seja do negócio.</p>
<p><strong>A Armadilha Comum:</strong> Quem nunca ouviu de um executivo: "Decisões técnicas são com o time de Arquitetura"? Ele está, na verdade, transferindo a responsabilidade pela definição do <strong>risco de negócio</strong>. Seu time define o <strong>COMO</strong> (a <em>stack</em>), mas o Negócio define o <strong>QUANTO</strong> (o RTO e o RPO aceitáveis). É seu papel <strong>devolver a pergunta</strong> para que a decisão de risco seja do negócio.</p>
</blockquote>
<h3 id="heading-traduzindo-conceitos-de-resiliencia-para-a-lideranca"><strong>Traduzindo Conceitos de Resiliência para a Liderança:</strong></h3>
<p>(Afinal, quem nunca ouviu: <em>“Agora traduz isso pra eu entender!”</em>)</p>
<pre><code class="lang-plaintext">1. Failover Multi-Region

   Tradução: O seguro contra a catástrofe. Garante que um desastre
             regional não nos tire do ar por dias, reduzindo o 
             prejuízo de receita a poucas horas.

   Pergunta: Quantas horas (ou minutos) de downtime o negócio pode
             aceitar no serviço X, caso a região inteira caia?
------------------------------------------------------------------
2. Active-Active Setup

   Tradução: Disponibilidade máxima e ininterrupta. Permite que 
             façamos qualquer manutenção ou atualização sem jamais 
             impactar o cliente final.

   Pergunta: O serviço X precisa estar 100% contínuo? Podemos ter 
             um período de 15 minutos de downtime para manutenção?
------------------------------------------------------------------
3. RTO / RPO

   Tradução: Definindo o Limite do Prejuízo. São os números que 
             nos dizem o que e por quanto tempo podemos perder antes
             que as multas ou a reputação se tornem insustentáveis.

   Pergunta: Quantos dados (RPO) podemos perder e quanto tempo (RTO)
             o time tem para restaurar o serviço sem que o negócio quebre?
------------------------------------------------------------------
4. SPOF (Single Point of Failure)

   Tradução: O Calcanhar de Aquiles da Receita. É o ponto fraco que,
             se quebrado, paralisa a empresa inteira. É onde o risco 
             deve ser zero.

   Pergunta: Se este componente cair, qual é o prejuízo financeiro 
             em 1 hora?
</code></pre>
<hr />
<h3 id="heading-7-conclusao"><strong>7. Conclusão</strong></h3>
<p>Não existe arquitetura <strong>à prova de falhas</strong>.</p>
<p>Mas existe <strong>organização à prova de surpresas</strong>.</p>
<p>E ela começa com decisões conscientes, documentação (os ADRs), e a humildade técnica de aceitar que o erro e o risco fazem parte da equação.</p>
<p>Times que entendem o <strong>"porquê"</strong> antes de se aprofundarem no <strong>"como"</strong> constroem sistemas que não apenas escalam, mas que, acima de tudo, <strong>sobrevivem</strong> — e crescem com previsibilidade.</p>
<hr />
<h3 id="heading-8-referencias-essenciais"><strong>8. Referências Essenciais</strong></h3>
<p>Para quem deseja aprofundar as decisões de risco e os padrões arquiteturais, estes são os documentos que usamos como base para a resiliência em qualquer <em>cloud</em> (com foco em AWS):</p>
<ul>
<li><p><strong>AWS Well-Architected Framework – <em>Reliability Pillar</em></strong>: O guia fundamental para entender os princípios de recuperação de desastres (DR) e alta disponibilidade (HA). <a target="_blank" href="https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/reliability.html"><strong>Guia de Confiabilidade (Reliability Pillar)</strong></a></p>
</li>
<li><p><strong><em>Disaster Recovery of Workloads on AWS</em></strong>: Documento-chave para aprofundar RTO/RPO e escolher entre padrões como <em>Pilot Light</em> e <em>Active-Active</em>. <a target="_blank" href="https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/introduction.html"><strong>Whitepaper de DR</strong></a></p>
</li>
<li><p><strong><em>DynamoDB Global Tables</em></strong>: Um excelente estudo de caso prático de HA a nível de dados, que abstrai a complexidade do <em>multi-region</em>. <a target="_blank" href="https://aws.amazon.com/pt/dynamodb/global-tables/"><strong>Documentação do DynamoDB Global Tables</strong></a></p>
</li>
<li><p><strong><em>EventBridge Resilience Guide</em></strong>: Essencial para quem trabalha com <em>serverless</em>, focando em padrões de resiliência baseados em eventos. <a target="_blank" href="https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-resilience.html"><strong>Guia de Resiliência do EventBridge</strong></a></p>
</li>
</ul>
<hr />
<h3 id="heading-9-glossario-essencial-para-resiliencia"><strong>9. Glossário Essencial para Resiliência</strong></h3>
<p>Para que todos estejam na mesma página, aqui estão alguns termos-chave utilizados neste artigo, explicados de forma simples:</p>
<ul>
<li><p><strong>Alta Disponibilidade (HA):</strong> É a capacidade de um sistema continuar operando mesmo quando um ou mais de seus componentes falham. Medimos em "9s" (ex: 99,99%).</p>
</li>
<li><p><strong>Outage:</strong> Uma interrupção não planejada de um serviço, ou seja, o serviço fica fora do ar.</p>
</li>
<li><p><strong>On-premise:</strong> Infraestrutura e data centers próprios que estão fisicamente no local da empresa (não na nuvem).</p>
</li>
<li><p><strong>Multi-Região:</strong> Usar data centers em duas ou mais regiões geográficas diferentes da nuvem (ex: Leste dos EUA e São Paulo) para máxima proteção contra desastres regionais.</p>
</li>
<li><p><strong>Multi-AZ (Multi-Availability Zone):</strong> Usar duas ou mais Zonas de Disponibilidade (datacenters isolados e próximos) <strong>dentro</strong> da mesma região da nuvem. É o padrão básico de HA.</p>
</li>
<li><p><strong>SLA (Service Level Agreement):</strong> Um acordo formal que define o nível de serviço esperado de um fornecedor para um cliente (geralmente medido em tempo de <em>uptime</em>).</p>
</li>
<li><p><strong>ROI (Retorno Sobre o Investimento):</strong> Uma métrica financeira que mede a relação entre o dinheiro ganho (ou economizado) e o dinheiro investido.</p>
</li>
<li><p><strong>ADR (Architecture Decision Record):</strong> Documento curto que registra uma decisão arquitetural, o motivo e o risco aceito em um ponto específico do tempo.</p>
</li>
<li><p><strong>RTO (Recovery Time Objective):</strong> O <strong>tempo</strong> máximo aceitável que um sistema pode ficar fora do ar após uma falha.</p>
</li>
<li><p><strong>RPO (Recovery Point Objective):</strong> A <strong>quantidade de dados</strong> (medida em tempo, ex: 5 minutos) que pode ser perdida durante um evento de desastre.</p>
</li>
<li><p><strong>Serverless:</strong> Um modelo de computação em nuvem onde o provedor gerencia toda a infraestrutura, e o desenvolvedor se foca apenas no código, pagando apenas pelo uso.</p>
</li>
<li><p><strong>Circuit Breaker:</strong> Um padrão de software que, quando um serviço dependente começa a falhar repetidamente, "abre" o circuito, protegendo o restante da aplicação de falhas em cascata.</p>
</li>
</ul>
<hr />
<p>💡 Quer aprofundar esse debate sobre resiliência, orquestração e o papel estratégico do desenvolvedor na era <em>serverless</em>?</p>
<p>Estarei no <a target="_blank" href="https://sdsp.io/"><strong>ServerlessDays São Paulo,</strong></a> no dia 8 de novembro, no Cubo Itaú, falando exatamente sobre como ir além da simples <em>stack</em> e construir sistemas que não apenas funcionam, mas prosperam no caos. <strong>Te vejo lá!</strong></p>
]]></content:encoded></item></channel></rss>