System design: URL Shortener — simplicidade em escala

“Design a URL shortening service like Bitly or TinyURL.” Essa é geralmente a primeira pergunta de system design que candidatos encontram. Parece simples — recebe URL longa, retorna URL curta, redireciona quando acessam. Dá pra fazer em 50 linhas de código, certo? Certo. Pra 100 usuários. Agora faz isso pra 100 bilhões de URLs com 100.000 redirects por segundo e vamos ver o quão “simples” é. O URL Shortener é o exercício perfeito pra fechar a série porque combina decisões aparentemente simples que revelam profundidade quando você puxa o fio: ...

30 de maio de 2026 · 16 minutos · Ricardo Martins

System design: Twitter/X — feed de notícias em escala

“Design a social media feed like Twitter.” Se YouTube é sobre arquivos grandes, WhatsApp sobre entrega garantida, e Uber sobre dados em movimento, Twitter é sobre o problema mais traiçoeiro de todos: fan-out. Um único tweet de alguém com 50 milhões de followers precisa aparecer na timeline de cada um deles — em segundos. O que parece simples (“mostrar posts de quem eu sigo em ordem cronológica”) se torna um monstro de engenharia quando a escala é: ...

28 de maio de 2026 · 17 minutos · Ricardo Martins

System design: Uber — geolocalização e matching em tempo real

“Design a ride-sharing platform like Uber.” Se YouTube é sobre throughput de dados e WhatsApp sobre latência de mensagens, Uber é sobre dados em movimento. Literalmente. Milhões de carros se movendo simultaneamente, e o sistema precisa saber onde cada um está — a cada segundo — pra conectar passageiros e motoristas em tempo real. O desafio do Uber é único porque combina: Geolocalização em tempo real (milhões de pontos se movendo) Matching otimizado (encontrar o melhor motorista, não apenas o mais próximo) Cálculo de rota e ETA (com condições de tráfego variando) Pricing dinâmico (oferta e demanda flutuando por região e minuto) Tudo isso com latência perceptível pro usuário de < 3 segundos entre apertar “pedir corrida” e ver o motorista atribuído. ...

26 de maio de 2026 · 17 minutos · Ricardo Martins

System design: WhatsApp — messaging em tempo real

“Design a messaging system like WhatsApp.” Se o YouTube é o exercício clássico de throughput e storage, WhatsApp é o exercício clássico de latência e conexões persistentes. O desafio muda completamente: em vez de entregar arquivos grandes pra milhões de viewers passivos, precisamos entregar mensagens pequenas pra bilhões de usuários em tempo real — e garantir que nenhuma se perca. WhatsApp processa mais de 100 bilhões de mensagens por dia com uma equipe historicamente pequena (~50 engenheiros quando foi adquirido pelo Facebook em 2014). Esse é o poder de boas decisões arquiteturais. ...

24 de maio de 2026 · 14 minutos · Ricardo Martins

System design: YouTube — streaming de vídeo em escala

“Design a video-sharing platform like YouTube.” Essa é possivelmente a pergunta de system design mais clássica que existe. E o motivo é simples: um sistema de vídeo toca em quase todo conceito importante — upload de arquivos grandes, processamento assíncrono, storage massivo, CDN global, adaptive streaming, e leitura pesada com caching agressivo. Nesse artigo, vamos aplicar o framework do post anterior pra projetar uma plataforma de vídeo do zero. Não vou fingir que estamos inventando o YouTube — vou explicar por que cada decisão arquitetural faz sentido no contexto de escala real. ...

22 de maio de 2026 · 12 minutos · Ricardo Martins

System design na prática: como pensar sistemas em escala

Você está numa entrevista. O entrevistador vira e fala: “Design a video-sharing platform like YouTube.” Você tem 45 minutos. O que faz primeiro? Se a resposta for “começo desenhando caixinhas no diagrama” — você já perdeu. System design não é sobre saber a resposta certa. É sobre demonstrar como você pensa. E pensar bem em system design é uma skill que se desenvolve com framework, prática e repertório. Este é o primeiro artigo da série System Design na Prática. Nos próximos posts, vamos dissecar sistemas reais — YouTube, WhatsApp, Uber, Twitter — mas antes precisamos do toolkit mental. Esse artigo é o seu canivete suíço. ...

20 de maio de 2026 · 8 minutos · Ricardo Martins

Guia para arquitetura de aplicações

Se você estiver desenvolvendo seus aplicativos nativos em nuvem, recomendo fortemente que você consulte este guia mesmo que não esteja usando Azure especificamente. Estilos de arquitetura N-tier: divide um aplicativo em camadas lógicas e camadas físicas Web-queue-worker: frontend e backend dissociados por mensagens assíncronas Microserviços: serviços funcionalmente decompostos que chamam uns aos outros por meio de APIs Arquitetura orientada a eventos: produtor/consumidor. Visão independente por subsistema Big data: divida um enorme conjunto de dados em pequenos pedaços. Processamento paralelo em datasets locais Big compute: alocação de dados para milhares de núcleos Escolhas tecnológicas Escolha do serviço de computação Escolha do serviço de armazenamento de dados Escolha do serviço de mensagens assíncronas Design da arquitetura Arquiteturas de referência: Cada arquitetura de referência inclui práticas recomendadas, juntamente com considerações sobre escalabilidade, disponibilidade, segurança, resiliência e outros aspectos do design Princípios de design: 10 princípios de design de alto nível que tornarão seu aplicativo mais escalonável, resiliente e gerenciável Padrões de design: Esses padrões de design são úteis para construir aplicativos confiáveis, escaláveis e seguros na nuvem Práticas recomendadas: abrangem diversas considerações de design, incluindo design de API, escalonamento automático, particionamento de dados, armazenamento em cache e assim por diante. Melhores práticas de segurança: descreva como garantir que a confidencialidade, integridade e disponibilidade da sua aplicação não sejam comprometidas por agentes mal-intencionados. Pilares de qualidade Microsoft Azure Well-Architected Framework Mais detalhes Conceitos básicos de arquitetura de aplicações

14 de novembro de 2023 · 2 minutos · Ricardo Martins