<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Paulo Barbosa — Blog</title><description>Carreira, engenharia e o que aprendi errando primeiro pra você não precisar.</description><link>https://paulobarbosa.dev</link><language>pt-BR</language><item><title>Desenhando uma API pensada para rastreabilidade</title><link>https://paulobarbosa.dev/blog/design-de-api-para-rastreabilidade</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/design-de-api-para-rastreabilidade</guid><description>A maior parte das APIs devolve estado. Quem precisa provar o que aconteceu precisa de outra coisa, e isso muda o desenho desde o primeiro endpoint.</description><pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate></item><item><title>O MVP mais mal entendido do mercado</title><link>https://paulobarbosa.dev/blog/mvp-mal-entendido</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/mvp-mal-entendido</guid><description>Virou sinônimo de versão capenga com prazo curto. A ideia original era outra e é bem mais útil.</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Retry, backoff e dead letter queue</title><link>https://paulobarbosa.dev/blog/retry-backoff-dlq</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/retry-backoff-dlq</guid><description>Repetir a operação que falhou parece trivial. Feito errado, o retry transforma uma falha pequena numa queda geral.</description><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Conciliação financeira automatizada: o que ninguém conta</title><link>https://paulobarbosa.dev/blog/conciliacao-financeira-automatizada</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/conciliacao-financeira-automatizada</guid><description>O relatório do gateway não bate com o seu banco de dados. Nunca bate. A questão é o que fazer com as diferenças que são normais.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Correlation ID, trace ID e span ID: quem é quem</title><link>https://paulobarbosa.dev/blog/correlation-id-trace-id-diferenca</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/correlation-id-trace-id-diferenca</guid><description>Três identificadores que quase todo mundo mistura, e a diferença entre eles é o que permite responder o que aconteceu com aquela requisição.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>SQL injection em 2026: por que ainda acontece</title><link>https://paulobarbosa.dev/blog/sql-injection-em-2026</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/sql-injection-em-2026</guid><description>A falha tem quase trinta anos e continua aparecendo. Não é por falta de conhecimento: é por causa dos lugares onde o ORM não alcança.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Event sourcing: quando vale e quando é tiro no pé</title><link>https://paulobarbosa.dev/blog/event-sourcing-quando-vale</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/event-sourcing-quando-vale</guid><description>Padrão poderoso, caro e adotado pelo motivo errado com frequência. Os quatro casos onde ele se paga.</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Estimativa honesta: como dar prazo sem mentir</title><link>https://paulobarbosa.dev/blog/estimativa-honesta</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/estimativa-honesta</guid><description>O problema da estimativa não é a matemática. É que a pergunta feita e a pergunta respondida quase nunca são a mesma.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Ledger imutável: como corrigir um erro sem apagar nada</title><link>https://paulobarbosa.dev/blog/ledger-imutavel-corrigir-erro</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/ledger-imutavel-corrigir-erro</guid><description>Lançou errado. A tabela não aceita update. E agora? A resposta é a mesma que a contabilidade usa há séculos.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Cenário: o índice que faltava e derrubou a Black Friday</title><link>https://paulobarbosa.dev/blog/cenario-indice-faltando</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/cenario-indice-faltando</guid><description>Caso de estudo. A query rodava em 40ms havia dois anos. Num sábado ela passou de 12 segundos e levou o site junto.</description><pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Monólito modular: a arquitetura que a maioria dos times deveria ter</title><link>https://paulobarbosa.dev/blog/monolito-modular</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/monolito-modular</guid><description>A discussão monólito contra microserviço esconde a opção do meio, que é onde quase todo produto deveria estar.</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Hash de senha: bcrypt, scrypt, Argon2 e os parâmetros que importam</title><link>https://paulobarbosa.dev/blog/hash-de-senha-argon2</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/hash-de-senha-argon2</guid><description>Escolher o algoritmo é a parte fácil. Os parâmetros errados transformam a escolha certa em proteção de mentira.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Outbox pattern no Postgres: mensagem e transação no mesmo commit</title><link>https://paulobarbosa.dev/blog/outbox-pattern-postgres</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/outbox-pattern-postgres</guid><description>Gravar no banco e publicar na fila são duas operações que podem falhar separadamente. O outbox junta as duas num commit só.</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate></item><item><title>O que é um product studio e por que fundei um</title><link>https://paulobarbosa.dev/blog/product-studio-o-que-e</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/product-studio-o-que-e</guid><description>Não é agência, não é consultoria e não é fábrica de software. A diferença está no que se entrega e em quem carrega o risco.</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Segredo commitado: o que fazer nas primeiras duas horas</title><link>https://paulobarbosa.dev/blog/segredos-no-repositorio</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/segredos-no-repositorio</guid><description>Acontece com todo time. O que decide o tamanho do estrago é a ordem das ações, e quase todo mundo faz na ordem errada.</description><pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Saldo calculado ou saldo materializado: escolha com consequência</title><link>https://paulobarbosa.dev/blog/saldo-derivado-vs-materializado</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/saldo-derivado-vs-materializado</guid><description>A pergunta que todo sistema financeiro enfrenta no primeiro mês. Escolher errado é barato agora e caro depois.</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Merkle tree na prática: provar que nada foi alterado</title><link>https://paulobarbosa.dev/blog/merkle-tree-na-pratica</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/merkle-tree-na-pratica</guid><description>A estrutura por trás do Git, do Bitcoin e do certificate transparency. Mais simples do que a fama sugere, e útil fora de blockchain.</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate></item><item><title>O engenheiro que entende produto vale o dobro</title><link>https://paulobarbosa.dev/blog/engenheiro-que-entende-produto</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/engenheiro-que-entende-produto</guid><description>Não é sobre virar PM. É sobre parar de aceitar tarefa e começar a discutir problema, que é onde a decisão cara acontece.</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate></item><item><title>IDOR: a falha mais chata e mais comum de todas</title><link>https://paulobarbosa.dev/blog/idor-broken-access-control</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/idor-broken-access-control</guid><description>Trocar o número na URL e ver o dado de outra pessoa. Não precisa de ferramenta, não precisa de conhecimento, e continua em toda parte.</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Idempotência em pagamentos: o problema de cobrar duas vezes</title><link>https://paulobarbosa.dev/blog/idempotencia-em-pagamentos</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/idempotencia-em-pagamentos</guid><description>Os quatro pontos de um fluxo de pagamento onde a duplicata entra, e o que cada um exige. Nenhum deles é resolvido pelo mesmo mecanismo.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Audit trail que aguenta uma auditoria de verdade</title><link>https://paulobarbosa.dev/blog/audit-trail-que-aguenta-auditoria</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/audit-trail-que-aguenta-auditoria</guid><description>Quase todo sistema tem uma tabela de log de alteração. Quase nenhuma responde as perguntas que aparecem quando a auditoria chega.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Query N+1: como detectar e matar</title><link>https://paulobarbosa.dev/blog/n-mais-1-detectar-e-matar</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/n-mais-1-detectar-e-matar</guid><description>O bug de performance mais comum em aplicação com ORM. Invisível em desenvolvimento, brutal em produção, e sempre a mesma correção.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate></item><item><title>JWT: os erros que aparecem em quase todo projeto</title><link>https://paulobarbosa.dev/blog/jwt-erros-comuns</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/jwt-erros-comuns</guid><description>Token assinado não é token seguro. Sete problemas que eu encontro com frequência desconfortável, e como consertar cada um.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Como funciona um core ledger por dentro</title><link>https://paulobarbosa.dev/blog/como-funciona-core-ledger-por-dentro</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/como-funciona-core-ledger-por-dentro</guid><description>Do request que chega ao saldo que aparece na tela. As camadas, os locks e o que roda de madrugada pra garantir que o número está certo.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Log append-only: a estrutura mais subestimada de arquitetura</title><link>https://paulobarbosa.dev/blog/append-only-log-arquitetura</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/append-only-log-arquitetura</guid><description>Uma tabela onde só se insere resolve rastreabilidade, auditoria, integração e boa parte dos bugs de concorrência. E quase ninguém começa por ela.</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate></item><item><title>De júnior a pleno: o que realmente muda</title><link>https://paulobarbosa.dev/blog/junior-pleno-o-que-muda</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/junior-pleno-o-que-muda</guid><description>Não é a quantidade de tecnologia que você conhece. É parar de entregar no escuro e começar a sustentar a própria decisão.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Cenário: a cobrança que saiu duas vezes</title><link>https://paulobarbosa.dev/blog/cenario-cobranca-duplicada</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/cenario-cobranca-duplicada</guid><description>Um caso de estudo montado a partir de um padrão que se repete. O bug leva quatro minutos pra acontecer e três dias pra ser entendido.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate></item><item><title>UUIDv7, ULID ou Snowflake: identificadores que não sabotam seu índice</title><link>https://paulobarbosa.dev/blog/uuid-v7-ulid-snowflake-comparacao</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/uuid-v7-ulid-snowflake-comparacao</guid><description>UUIDv4 como chave primária é a decisão mais fácil de tomar e uma das mais caras de manter. Existe alternativa.</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Autenticação e autorização: confundir os dois custa caro</title><link>https://paulobarbosa.dev/blog/autenticacao-vs-autorizacao</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/autenticacao-vs-autorizacao</guid><description>Saber quem é a pessoa e saber o que ela pode fazer são problemas separados. A maioria dos vazamentos mora na segunda parte.</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Por que dinheiro nunca deve ser float</title><link>https://paulobarbosa.dev/blog/dinheiro-nunca-em-float</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/dinheiro-nunca-em-float</guid><description>0.1 + 0.2 não dá 0.3. Isso é uma curiosidade em tutorial e um prejuízo em sistema de pagamento.</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Índices no Postgres: os que importam e os que só ocupam disco</title><link>https://paulobarbosa.dev/blog/postgres-indices-que-importam</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/postgres-indices-que-importam</guid><description>Metade dos índices que eu encontro em projeto nunca foi usada. E o índice que faltava está sempre na query que trava tudo.</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Idempotência: a chave que salva sua API de cobrar duas vezes</title><link>https://paulobarbosa.dev/blog/idempotencia-chave-idempotente-api</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/idempotencia-chave-idempotente-api</guid><description>Rede falha no meio. O cliente não sabe se deu certo e tenta de novo. O que acontece depois disso é decisão de arquitetura.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Como eu enxergo a arquitetura do LinkedIn</title><link>https://paulobarbosa.dev/blog/arquitetura-do-linkedin</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/arquitetura-do-linkedin</guid><description>A empresa que resolveu o problema de integração entre sistemas transformando o log num produto. É por isso que o Kafka existe.</description><pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Modelagem de ameaças em uma hora, com post-it</title><link>https://paulobarbosa.dev/blog/modelagem-de-ameacas-pratica</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/modelagem-de-ameacas-pratica</guid><description>Dá pra fazer sem consultoria, sem framework de quatro letras e sem ninguém com cargo de segurança no time.</description><pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Como eu enxergo a arquitetura do Spotify</title><link>https://paulobarbosa.dev/blog/arquitetura-do-spotify</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/arquitetura-do-spotify</guid><description>Dois sistemas escondidos num só: um orçamento de latência medido em milissegundos, e um log de eventos que também é a contabilidade.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Partidas dobradas explicadas para desenvolvedor</title><link>https://paulobarbosa.dev/blog/partidas-dobradas-para-devs</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/partidas-dobradas-para-devs</guid><description>Contabilidade do século XV é a melhor constraint de integridade que já inventaram pra dinheiro. Sem jargão de contador.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Como eu enxergo a arquitetura do WhatsApp</title><link>https://paulobarbosa.dev/blog/arquitetura-do-whatsapp</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/arquitetura-do-whatsapp</guid><description>Criptografia ponta a ponta não é uma funcionalidade. É uma restrição que decide o que o servidor pode fazer, e ela simplifica mais do que complica.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate></item><item><title>O que é hash criptográfico, explicado para quem constrói sistema</title><link>https://paulobarbosa.dev/blog/o-que-e-hash-criptografico-para-engenheiros</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/o-que-e-hash-criptografico-para-engenheiros</guid><description>Sem analogia de liquidificador. O que a função garante, o que ela não garante, e onde o uso errado aparece em produção.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Como eu enxergo a arquitetura do YouTube</title><link>https://paulobarbosa.dev/blog/arquitetura-do-youtube</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/arquitetura-do-youtube</guid><description>Upload não é uma requisição, é um pipeline. E a recomendação não escolhe o melhor vídeo: ela elimina quase todos antes de escolher.</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Como construir aplicações seguras: o guia que eu queria ter lido</title><link>https://paulobarbosa.dev/blog/como-construir-aplicacoes-seguras</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/como-construir-aplicacoes-seguras</guid><description>A maioria dos incidentes não vem de ataque sofisticado. Vem de permissão mal desenhada e de coisa que ninguém revisou.</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Como eu enxergo a arquitetura do Instagram</title><link>https://paulobarbosa.dev/blog/arquitetura-do-instagram</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/arquitetura-do-instagram</guid><description>O sistema mais impressionante da série é o mais entediante. E o identificador deles carrega a resposta pra um problema que quase todo mundo resolve errado.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate></item><item><title>O que é um core ledger e por que quase todo produto financeiro precisa de um</title><link>https://paulobarbosa.dev/blog/o-que-e-core-ledger</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/o-que-e-core-ledger</guid><description>Coluna de saldo na tabela de usuário funciona até o dia em que alguém pergunta por que o número está errado. Aí não tem resposta.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Como eu enxergo a arquitetura do Twitter (X)</title><link>https://paulobarbosa.dev/blog/arquitetura-do-twitter-x</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/arquitetura-do-twitter-x</guid><description>Uma timeline não é uma consulta. É um resultado calculado antes de alguém pedir, e é essa inversão que sustenta o produto inteiro.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Como projetar um sistema de rastreabilidade com hash único</title><link>https://paulobarbosa.dev/blog/system-design-rastreabilidade-hash-unico</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/system-design-rastreabilidade-hash-unico</guid><description>Gerar um hash é fácil. Difícil é responder, seis meses depois, o que aquele hash prova. Um projeto de ponta a ponta.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate></item><item><title>O que seis empresas me ensinaram sobre começar de novo</title><link>https://paulobarbosa.dev/blog/seis-empresas-comecar-de-novo</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/seis-empresas-comecar-de-novo</guid><description>Trocar de empresa não é recomeçar do zero — é levar um repertório novo pra um problema novo.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate></item><item><title>De pleno a sênior: o que realmente muda</title><link>https://paulobarbosa.dev/blog/de-pleno-a-senior</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/de-pleno-a-senior</guid><description>Não é sobre saber mais tecnologia. É sobre ampliar o raio do teu impacto.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Feedback que funciona: como pedir e como dar</title><link>https://paulobarbosa.dev/blog/feedback-que-funciona</link><guid isPermaLink="true">https://paulobarbosa.dev/blog/feedback-que-funciona</guid><description>A maioria dos feedbacks é inútil por educação. Um roteiro simples pra mudar isso.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate></item></channel></rss>