System Design - O Sumário e o Prefácio (Comece por aqui)
Prefácio
Dissolver e Coagular: O conhecimento de uma vida, até agora…
Desde sempre, eu me considero uma pessoa de sorte dentro da área de tecnologia. Tive a sorte de poder contar com muita gente boa no meu caminho. Pessoas que confiaram em mim (até mais do que eu mesmo) para estar no lugar certo e aproveitar as melhores oportunidades de encarar os mais variados desafios sistêmicos e pessoais que, na maioria dos casos, eu nem estava preparado. Não tenho palavras para descrever como todas essas pessoas e desafios me moldaram e me prepararam para ser quem eu sempre quis ser (até agora). Pessoas que hoje orgulhosamente posso chamar de amigos, e família. E este livro é, de muitas formas, uma homenagem a todas elas.
Este livro é uma tentativa de compilar o conhecimento de uma vida. Da minha vida. Até agora. Não como um repositório definitivo, nem como um manifesto fechado, mas como um recorte sincero do que foi possível compreender até determinado ponto da minha caminhada.
Dissolver e coagular. É um movimento que se repete ao longo de toda uma vida dedicada a aprender, errar, reaprender e compartilhar. Dissolver certezas antigas. Coagular ideias mais maduras. Desmontar modelos que já não explicam o mundo. Reconstruir estruturas mais honestas, mais simples e, sobretudo, mais verdadeiras. Desde o meu primeiro blogpost em 2013. Desde o meu primeiro commit de algo útil em produção.
Nesse caminho, aprendi que carregar demais atrasa. Ideias acumuladas pesam. E todo o conhecimento compilado aqui é a minha forma de esvaziar as malas com tudo o que foi acumulado até agora, para poder seguir mais rápido daqui pra frente rumo ao mar de experiências e conhecimento do mundo. E, sinceramente, eu estou muito curioso para saber que tipo de coisas vou colocar nelas daqui pra frente.
Aqui, eu te prometo convicções fortes de alguma forma, mas ainda mais dúvidas abertas e muitas imperfeições assumidas. E isso é intencional. Conhecimento precisa ser vivo e honesto, próprio pra ser adaptado pra diversas realidades e necessidadades diferentes do mundo real. Conhecimento precisa ser questionado, debatido e evolutivo. Esses capítulos falam de escolhas, de limites, de responsabilidade, de consequências e, acima de tudo, de pessoas. De você, principalmente.
Não pretendo te ensinar verdades absolutas, nem oferecer atalhos fáceis (muito pelo contrário, eu acho…). É um convite para entender tecnologias e conceitos por “baixo do capô”, termo usado nas primeiras turmas do treinamento de System Design, e um convite à reflexão e ao diálogo sobre como cada coisa realmente funciona em essência, e que problemas elas de fato resolvem. A partir dos meus olhos e experiências, somados a outros milhares que tornaram esses conceitos sólidos e validados de forma prática e acadêmica através dos anos. Um registro honesto do que foi aprendido até aqui e uma declaração aberta da minha ansiedade pelo quanto ainda há para aprender. E espero, do fundo do meu coração, despertar isso em você.
Há mais de um século, alguém cometeu o “terrível crime” de afirmar ao mundo que todo homem e toda mulher são, por si, estrelas. Cada um em sua totalidade e plenitude. Todos possuem direito a um céu para brilhar. Refleti sobre essa frase por muito tempo. Com o passar dos anos, percebi que minha verdadeira vontade não está apenas em fazer a minha própria estrela brilhar, mas em descobrir formas de fazer com que a estrela do próximo também encontre sua própria luz. Compartilhar conhecimento é, para mim, um ato de alinhamento com esse propósito.
Entrego a você, algo que vem da minha alma. Algo sincero. Uma parte de mim. Cada palavra aqui, eu coloquei cuidado e carinho. Relendo esses textos pra escrever esse prefácio, posso afirmar com siceridade que eu escrevi o livro que eu sempre quis ler. E isso pra mim, vale muito…
Todos esses artigos são a minha mais genuína forma de rebeldia pra gerar o mais alto nível de conhecimento livre e gratuito, na minha lingua materna, para o meu País, para o meu povo que eu fui capaz (até o momento). Coisas que não existiam compiladas e ilustradas com linguagem acessível pra todos (até o momento). Espero que seja uma semente. Mais uma…
Espero que sua caminhada seja proveitosa e divertida. Obrigado pela confiança. É só o começo.
Palavras emocionais demais pra um livro técnico, eu sei… Vou corrigir isso a seguir. Te desejo boa sorte…
Sumário
- 0. Texto Livre: Teoria das Janelas Quebradas Na Engenharia de Software
- 1. Protocolos de Rede
- 2. Storage, Raid e I/O
- 3. Teorema CAP, Databases ACID e BASE
- 4. Teorema PACELC
- 5. Databases, Modelos de Dados e Indexação
- 6. Estratégias de Cache
- 7. Microsserviços, Monolitos e Domínios
- 8. Load Balancers e Proxies Reversos
- 9. API Gateways
- 10. Backend for Frontends (BFF’s)
- 11. Service Mesh Pattern
- 12. Principios de Concorrência e Paralelismo
- 13. Padrões de Comunicação Síncronos (HTTP, gRPC, RPC, REST)
- 14. Mensageria, Eventos, Streaming e Arquitetura Assincrona
- 15. Performance, Capacidade e Escalabilidade
- 16. Scale Cube
- 17. Principios de Sharding e Particionamento
- 18. Principios de Replicação de Dados
- 19. CQRS (Command-Query Responsability Segregation)
- 20. Saga Pattern
- 21. Event Sourcing Pattern
- 22. Patterns de Resiliência (Idempotencia, Circuit Breakers, Retries, Fallbacks, Timeouts e etc)
- 23. Monitoramento e Observabilidade (em breve)
- 24. Confiabilidade de Sistemas (em breve)
- 25. Bulkhead Pattern (Em Breve)
- 26. Cell Based Pattern (Em Breve)
- 27. Modelos de Deployment (Blue/Green, Canary, Feature Toggles e etc)
- 28. Capacity Planning e Teoria das Filas
- 29. Testes de Carga e Estresse
- 30. Single Point of Failure (Em Breve)
- 21. Autenticação, Autorização e Zero-Trust (Em Breve)