Design Spec — Trilha System Design

Refator de monólito (tronco→galhos), não greenfield. Alvo: item 8 da Onda C do Roadmap — “escalar de 7 notas para trilha de entrevista sênior (CAP, sharding, caching, filas, consistência, design exercises)“.

Contexto

A pasta 03-Dominios/Engenharia/Arquitetura/ guarda dois monólitos que ensinam habilidades diferentes:

  • System Design.md (921 linhas) — a habilidade de whiteboard de entrevista. É o alvo desta trilha.
  • Arquitetura de Software.md (992 linhas) — o ofício de arquitetura (estilos, DDD, SOLID, Conway, C4/ADR, observabilidade). Fora do escopo desta sessão — vira trilha própria no futuro.

Mais o galho Event Storming (existente) e o stub Gateway de Pagamento.

Decisões travadas (com o usuário, 2026-07-06)

  1. Sub-galhos, não galho único flat.
  2. Os 8 walkthroughs viram 8 notas Magus densas (aplicação ponta-a-ponta) — é o coração da trilha.
  3. É System Design (sistemas distribuídos), não design system de UI.
  4. Tópicos que moram em outros galhos podem ser revisitados aqui sob a ótica de system design — redundância como reforço, sempre com cross-link.

Estrutura de pastas

Engenharia/Arquitetura/
├── System Design.md            ← vira TRONCO PODADO (overview + porta de entrada)
├── System Design/              ← galho-pai (novo)
│   ├── index.md                (MOC do galho-pai)
│   ├── roadmap.md              (roadmap recursivo, galho-pai)
│   ├── 1 - Framework de entrevista/   (sub-galho, fase Iniciado)
│   ├── 2 - Building blocks/            (sub-galho, fase Adepto)
│   ├── 3 - Padrões recorrentes/        (sub-galho, fase Adepto)
│   └── 4 - Walkthroughs/               (sub-galho, fase Magus)
├── Arquitetura de Software.md  ← NÃO tocar nesta sessão
└── Event Storming/             ← existente; linkar, não reescrever

Cada subpasta de sub-galho recebe index.md (MOC) + roadmap.md (folha) + notas numeradas reiniciando em 01.

Roster de notas

Sub-galho 1 — Framework de entrevista (Iniciado, ~5 notas)

Como conduzir os 45-60 min do whiteboard sem travar. É a fase Iniciado: dá o processo antes do conteúdo.

#NotaEscopoFontes-âncora
01O que é System Design (e o que a entrevista avalia)Sinal buscado pelo entrevistador: estruturação, trade-offs, comunicação — não “a resposta certa”. Rubrica de senioridade.Alex Xu Vol.1 cap.1; Hello Interview “Delivery”
02Clarificar requisitos: funcionais, não-funcionais, restriçõesPerguntas de escopo; separar RF de RNF (latência, disponibilidade, consistência); fechar o escopo antes de desenhar.System Design Primer; Alex Xu
03Estimativas de escala (back-of-envelope)QPS = usuários×ações/86.400; peak factor 3-5; storage/bandwidth; latency numbers (jboner); powers of two.jboner gist; ByteByteGo estimation; Hello Interview “Numbers to Know”
04API design & data model na entrevistaEsboçar endpoints/contratos e o modelo de dados de forma enxuta; quando SQL vs NoSQL entra cedo.Alex Xu; API Design
05Diagrama de alto nível → deep dive → trade-offsSequência dos 45 min: desenho macro, aprofundar 1-2 componentes, fechar com trade-offs e evolução.Alex Xu framework; designgurus “First 10 minutes”

Sub-galho 2 — Building blocks (Adepto, ~7 notas)

O vocabulário de escala. Cada bloco é uma peça que reaparece nos walkthroughs.

#NotaEscopoFronteira / cross-link
01Escalabilidade & load balancingVertical vs horizontal, stateless, L4 vs L7, health checks, sticky sessions.linka Redes e Protocolos
02Cachingcache-aside / write-through / write-back, TTL, eviction (LRU/LFU), cache stampede e mitigação.linka Redis
03Bancos de dados em escala: SQL vs NoSQL & replicaçãoModelos de dado, leader-follower, read replicas, quando desnormalizar.reforço de Banco de Dados sob ótica SD
04Sharding & Consistent HashingEstratégias de partição (range/hash/geo), hot spots, consistent hashing (anel, virtual nodes) e rebalanceamento.tópico top-pedido; reforça, não duplica BD
05Message queues & processamento assíncronoFila vs log, backpressure, at-least/exactly-once sob ótica de design; desacoplar produtor/consumidor.usa Kafka/RabbitMQ como bloco; linka o detalhe
06CAP, consistência e consensoCAP e PACELC, consistência eventual/forte, quorum (R+W>N), leader election (intuição de Raft/Paxos).reforça CAP do monólito; conceito em Fundamentos
07CDN & entrega na bordaPoPs, cache hit ratio, invalidação/purge, push vs pull, TLS termination na borda.da pesquisa 2025; linka caching (02)

Sub-galho 3 — Padrões recorrentes (Adepto, ~6 notas)

Padrões que aparecem em quase todo design não-trivial. Vistos aqui pela lente “como usar em escala”, não “como modelar o domínio”.

#NotaEscopoFronteira / cross-link
01Pub/Sub & event-driven em escalaBroker, tópicos, fan-out, ordering, entrega; quando event-driven vence request-response.linka Arquitetura de Software (EDA)
02CQRS sob a ótica de system designSeparar read/write models por razão de escala/latência; read replicas materializadas.reforço de Event Storming/Arquitetura de Software + cross-link explícito
03Event Sourcing sob a ótica de system designLog de eventos como fonte da verdade; replay, snapshots, projeções; custo operacional.reforço de Event Storming + cross-link
04Rate LimitingToken bucket / leaky bucket / sliding window; distribuído com Redis + Lua (atômico), header 429.aprofundado no walkthrough 4
05Circuit Breaker & resiliênciaTimeout, retry (backoff+jitter), bulkhead, fallback; estados closed/open/half-open.reforça Resilience4j de Spring Boot sob ótica de design
06API Gateway & BFFRoteamento, auth, rate-limit, agregação; Backend-for-Frontend; onde o gateway vira gargalo.linka API Design / Comunicação entre Sistemas

Sub-galho 4 — Walkthroughs (Magus, 8 notas densas)

Cada nota conduz um design completo aplicando os building blocks e padrões. Estrutura fixa por nota: requisitos → estimativas → API → diagrama macro → deep dives → gargalos & trade-offs → variações de follow-up.

#SistemaPeças-chave que a nota exercita
01URL Shortener (bit.ly)hashing/base62, colisões, read-heavy, cache, analytics assíncrono
02News Feed / Timeline (Twitter/Instagram)fan-out on-write vs on-read, celebridades, feed cache, ranking
03Chat System (WhatsApp/Slack)WebSocket, presence, entrega/ordering, grupos, fila offline
04Distributed Rate Limiteraprofunda o padrão (SG3-04) em sistema completo: Redis, sincronização entre nós
05Notification Systemfan-out multi-canal (push/SMS/email), templates, dedup, retry, prioridade
06Distributed File Storage (Drive/Dropbox)chunking, metadata service, dedup, sync, consistência
07Web Crawler (Googlebot)BFS distribuído, politeness, dedup de URL, armadilhas de spider
08Distributed Key-Value Store (DynamoDB/Cassandra)consistent hashing, quorum, replicação, gossip, vector clocks

Capstone (opcional, no galho-pai): “Conduzindo a entrevista completa” — um walkthrough integral comentado meta-nível (gestão de tempo, sinais, recuperação de travadas). Decidir ao fechar o SG4.

Fronteiras anti-duplicação

TópicoPapel aquiMora emRegra
DDD estratégico/tático, Event StormingArquitetura de Software.md, Event Storminglinkar
Estilos (Hexagonal/Clean/Onion)Arquitetura de Software.mdlinkar
SOLID, design de códigoDesign de Softwarelinkar
APIs REST/GraphQL/gRPC (detalhe)building blockAPI Design, Comunicação entre Sistemasusar + linkar
Kafka/RabbitMQ internalsbloco de filaComunicação/Mensageriausar + linkar
CQRS / Event Sourcingótica de escalaEvent Stormingreforço + cross-link
ACID, índices, replicação SQLusaCiência/Banco de Dadosreforço + linkar
Observabilidade (craft logs/metrics/traces)usa p/ operar o designArquitetura de Software.mdlinkar

Padrão de escrita (cravado)

Nota = capítulo de livro (feedback_padrao_capitulo_livro): TL;DR [!abstract], abertura-problema concreta, divulgação progressiva, exemplo trabalhado. Densidade-alvo ~440-540 linhas (feedback_notas_profundas_diagramas) — mirar mais alto que a sessão de Web Performance/Testes JS. fase: no frontmatter (Iniciado/Adepto/Magus). ≥1 diagrama Mermaid (paleta azul #4A90D9 / âmbar #F5A623 / vermelho #D0021B). Callouts [!question]- (dúvidas) e [!warning] (armadilhas). Seção “Em entrevista” + “How to explain in English” com tabela PT↔EN. “O que vem a seguir”. ## Fontes com URL e dado sempre cravado com data/versão (caducidade). Pesquisa web inline por nota (via escrever-nota). Gravar direto, sem gate de rascunho.

Fontes canônicas da trilha

Plano de execução (ritmo B)

  1. Criar System Design/index.md + System Design/roadmap.md (galho-pai).
  2. Semear sub-galho a sub-galho, ponta a ponta, na ordem 1→2→3→4 (fases Iniciado→Adepto→Magus). Cada subpasta ganha index.md + roadmap.md + notas via escrever-nota.
  3. Ao fechar cada sub-galho: atualizar seu roadmap.md e o do galho-pai; commit por sub-galho (paths explícitos, git diff --cached, sem Co-Authored-By, push manual).
  4. Podar System Design.md → overview com callouts apontando pros sub-galhos (padrão tronco→galho).
  5. Atualizar Roadmap item 8 (🟡→🟢 ao fechar) e a memória.

Pontos em aberto

  • CDN (SG2-07): nota dedicada (proposto) ou dobrar em Caching? — decisão ao chegar no SG2.
  • Capstone do galho-pai: escrever ou não ao fechar o SG4.
  • Renumeração/ordem exata dentro de cada sub-galho pode ajustar durante o seeding.