Note
Todos os artigos aqui mencionados foram escritos pelo Matheus Fidelis, instrutor do curso Descomplicando o System Design e autor dos mesmos.
DAY-01 - Protocolos de Rede
- System Design - Protocolos e Comunicação de Rede
- Modelo OSI
- Os Protocolos de Comunicação
- UDP - User Datagram Protocol
- TCP - Transmission Control Protocol
- SSL/TLS - Transport Layer Security
- Demais Protocolos e Aplicações de Rede
- DNS - Domain Name Service
- DHCP - Dynamic Host Configuration Protocol
- NTP - Network Time Protocol
- SSH - Secure Shell
- Telnet
- Protocolos HTTP/1, HTTP/2 e HTTP/3
- HTTP/1.x
- HTTP/2
- HTTP/3 (QUIC)
DAY-02 - Storage, RAID e Sistemas de Arquivos
DAY-03 - Teorema CAP, ACID, BASE e Bancos de Dados Distribuídos
- System Design - Teorema CAP, ACID, BASE e Bancos de Dados Distribuídos
- O Teorema CAP
- ACID e BASE, os trade-offs entre SQL e NoSQL
- Modelo ACID - Atomicity, Consistency, Isolation, Durability
- Modelo BASE - Basically Available, Soft State, Eventual Consistency
- Explicação dos Componentes do CAP
- As combinações do Teorema: “Escolha 2”
- Tabela de Flavors (CAP)
- O que mudou depois da concepção do CAP?
- Teorema PACELC
- O Teorema PACELC
- Aplicações do PACELC
- Referências
DAY-04 - Databases, Modelos de Dados e Indexação
DAY-05 - Estratégias de Cache
DAY-06 - Monolitos, Microserviços e Domínios
DAY-07 - Load Balancers e Proxies Reversos
- System Design - Load Balancers e Proxies Reversos
- Fundamentos de Balanceadores de Carga
- Algoritmos de Balanceamento de Carga
- Load Balancing e Camada OSI
- Implementações e Tecnologias
- Referencias
DAY-08 - API Gateways
DAY-09 - Backend for Frontend (BFF)
DAY-10 - Service Mesh
DAY-11 - Conceitos de Concorrência e Paralelismo
DAY-12 - Padrões de Comunicação Síncronos
- System Design - Padrões de Comunicação Síncronos
- Definindo Comunicações Sincronas
- API’s REST - Representational State Transfer
- Webhooks
- RPC - Remote Procedure Call
- gRPC - Google Remote Procedure Call
- Websockets
- GraphQL
- Referências
DAY-13 - Protocolos de Comunicação Assincronos
- System Design - Mensageria, Eventos, Streaming e Arquitetura Assincrona
- Mensagens e Eventos
- Eventos vs Mensagens
- Conceitos e Padrões
- Protocolos e Arquiteturas Event-Driven
- Kafka e Event Streaming
- Protocolos e Arquiteturas de Message-Driven
- AMQP (Advanced Message Queuing Protocol)
- Referências
DAY-14 -Performance, Capacidade e Escalabilidade
DAY-15 -Scale Cube
DAY-16 - Sharding e Particionamento de Dados
- System Design - Sharding e Particionamento de Dados
- Definindo Sharding
- Escalabilidade e Performance
- Sharding Keys e Hot Partitions
- Estratégias e Aplicações de Sharding
DAY-17 - Replicação de Dados
DAY-18 - CQRS (Command Query Responsability Segregation)
DAY-19 - Saga Pattern
- System Design - Saga Pattern
- O que é o modelo SAGA?
- O problema de lidar com transações distribuídas
- O problema de lidar com transações longas
- A Proposta de Transações Saga
- Adoções Arquiteturais
- Referências
DAY-20 - Event Sourcing
DAY-21 - Padrões de Resiliência
- System Design - Padrões de Resiliência
- Definindo Resiliência
- Resiliência e Disponibilidade
- Métricas de Resiliência e Disponibilidade
- Blast Radius
- Estratégias e Patterns de Resiliência
- Replicação de Serviços, Balanceamento de Carga e Healthchecks
- Idempotência
- Timeouts
- Estratégias de Retry (Retentativas)
- Circuit Breakers
- Throttling e Rate Limiting
- Padrões de Fallback
- Graceful Degradation
- Backpressure como Resiliência
- Resiliência na Camada de Dados
- Sharding e Particionamento de Clientes em Resiliência
- Bulkhead Pattern
- Lease Pattern
- Referências
DAY-22 - Estratégias de Deployment
DAY-23 - Capacity Planning e a Teoria das Filas
- System Design - Capacity Planning e a Teoria das Filas
- Teoria das Filas
- Planejamento de Capacidade
- Delimitar o Fluxo, Funcionalidades e Componentes
- Levantar as Estimativas de Carga
- Identificação do Throughput Individual dos Componentes e Serviços
- Derivação do Throughput Sistêmico
- Levantamento da Projeção de Crescimento
- Avaliar o Custo e as Margens Operacionais
- Definição dos Limites Operacionais
- Testes de Carga e Estresse
- Referências
DAY-24 - Testes de Carga e Estresse
- System Design - Testes de Carga e Estresse
- Introdução
- Testes de Carga e Estresse
- Tipos de Teste
- Respondendo a Perguntas Chave
- Qual é o trafego esperado do meu sistema hoje?
- Quais são meus objetivos de tempo de resposta, taxa de erros e saturação?
- Qual é o trafego esperado do meu sistema em períodos de pico?
- Quais os protocolos e estímulos que minha aplicação é exposta?
- Qual é a expectativa de crescimento do meu sistema?
- Qual é o cenário mais extremo que o sistema enfrentará?
- Quais são as funcionalidades principais que precisam ser testadas?
- Quais são as jornadas comuns do usuário?
- Quais os endpoints mais utilizados? E quais os mais caros?
- Métricas em Testes de Performance
- Estratégias de pré-teste
- Ferramental para Testes
- Modelo de Roteiro de Teste
- Referências
DAY-25 - Bulkhead Pattern
DAY-26 - Cell Based Pattern
| Aula | Slides | Artigo Original |
|---|---|---|
| Protocolos de Rede | Slides | Artigo |
| Raid e Storage | Slides | Artigo |
| Teorema CAP, Database ACID, BASE e Teorema PACELC | Slides | Artigo |
| Databases, Modelos de Dados e Indexação | Slides | Artigo |
| Estratégias de Cache | Slides | Artigo |
| Monolitos, Microserviços e Domínios | Slides | Artigo |
| Load Balancers e Proxies Reversos | Slides | Artigo |
| API Gateways | Slides | Artigo |
| Backend for Frontend (BFF) | Slides | Artigo |
| Service Mesh | Slides | Artigo |
| Conceitos de Concorrência e Paralelismo | Slides | Artigo |
| Padrões de Comunicação Síncronos | Slides | Artigo |
| Protocolos de Comunicação Assincronos | Slides | Artigo |
| Performance, Capacidade e Escalabilidade | Slides | Artigo |
| The Scale Cube | Slides | Artigo |
| Conceitos de Sharding e Particionamento | Slides | Artigo |
| Conceitos de Replicação de Dados | Slides | Artigo |
| CQRS | Slides | Artigo |
| Saga Pattern | Slides | Artigo |
| Event Sourcing | Slides | Artigo |
| Patterns de Resiliência | Slides | Artigo |
| Estratégias de Deploy | Slides | Artigo |
| Capacity Planning e Teoria das Filas | - | Artigo |
| Testes de Carga e Estresse | Slides | Artigo |
| Bulkhead Pattern | Slides | Artigo |
| Cell Based Pattern | Slides | - |
| Case | Nível | Link |
|---|---|---|
| DDD - Core Banking | Basico | Link |
| DDD - Banco da Federação Galática | Avançado | Link |
| DDD - FoodTech | Basico / Intermediário | Link |
| Case e Catálogo de Marketplace | Basico | Link |
| Checkout de Livraria | Basico | Link |
| Encurtador de Links | Basico | Link |
| FoodTech | Intermediário | Link |
| Orquestrador de Notificações Omnichannel para E-commerce | Intermediário | Link |
| Case de Consistência com SAGA Pattern | Intermediário | Link |
| Case de Ledger REST | Avançado | Link |
| Gestão de Pacotes e Beneficios | Avançado | Link |
| Adaptação de Apostilas | Avançado | Link |
| Sistema de Contestação de Compras | Intermediário | Link |
| Sistema de Gestão de Pontos | Intermediário | Link |
| Sistema de Votação de Reality Shows | Intermediário | Link |
| Sistema Distribuído de Gestão de Estoque para Varejo | Intermediário | Link |
| Ingestão e Telemetria | Avançado | Link |
| Gestão de Vagas | Avançado | Link |
| Controle de Ponto | Intermediário | Link |
| Case | Link |
|---|---|
| Encurtador de Links | Draw.io |
| Busca e Catalogo | Draw.io |
| Notificação Omnichannel | Draw.io |
| Sistema de Votação | Draw.io |
| Sistema de Votação | Draw.io |
| Orquestrador de Notificações Omnichannel para E-commerce | Draw.io |
