Sobre o projeto

Este repositório é uma coleção curada de links para aprender sobre design de sistemas e se preparar para entrevistas de design de sistemas. Ele não contém software original; organiza artigos, vídeos, cursos, livros, newsletters, posts de blogs de engenharia e artigos sobre sistemas distribuídos. Principais seções incluem: - Conceitos Principais: escalabilidade, disponibilidade, confiabilidade, ponto de falha único (SPOF), latência vs throughput vs largura de banda, hashing consistente, teorema CAP, failover, tolerância a falhas. - Fundamentos de Redes: modelo OSI, endereços IP, DNS, proxy vs proxy reverso, HTTP/HTTPS, TCP vs UDP, balanceamento de carga, checksums. - Fundamentos de APIs: APIs, gateway de API, REST vs GraphQL, WebSockets, webhooks, idempotência, limitação de taxa, design de API. - Fundamentos de Bancos de Dados: transações ACID, SQL vs NoSQL, índices, sharding, replicação, escalabilidade, tipos de bancos de dados, filtros de Bloom, arquiteturas. - Fundamentos de Cache: básicos de cache, estratégias, políticas de evicção, cache distribuído, CDN. - Comunicação Assíncrona: pub/sub, filas de mensagens, captura de dados de alteração. - Sistemas Distribuídos e Microserviços: heartbeats, descoberta de serviço, algoritmos de consenso, bloqueio distribuído, protocolo de gossip, circuit breaker, recuperação de desastres, rastreamento distribuído. - Padrões de Arquitetura: cliente-servidor, microserviços, serverless, orientado a eventos, ponto a ponto. - Tradeoffs de Design de Sistema: escalabilidade vertical vs horizontal, concorrência vs paralelismo, polling longo vs WebSockets, processamento por lote vs stream, estado vs estado, modelos de consistência, estratégias de cache, push vs pull, REST vs RPC, sincrono vs assíncrono, latência vs throughput. - Preparação para Entrevistas: um framework para responder a problemas de entrevista de design de sistema, mais problemas práticos categorizados (fácil, médio, difícil) como encurtador de URL, WhatsApp, Instagram, Uber, Google Docs, Dropbox e armazenamento distribuído. - Recursos Adicionais: cursos, newsletters, livros, canais do YouTube, artigos de engenharia obrigatórios e artigos clássicos de sistemas distribuídos (Paxos, MapReduce, GFS, Dynamo, Kafka, Spanner, Bigtable, ZooKeeper, LSM-Tree, Chubby). O repositório é útil como um plano de estudos e índice de referência para engenheiros de software que se preparam para entrevistas de design de sistema ou buscam entender conceitos de sistemas distribuídos de grande escala.