📊 Capítulo 19: Padrões Enterprise: Resiliência e Microsserviços
Módulo 10: Paradigmas de Programação & Padrões de Projeto
🗺️ Padrões de Resiliência e Sistemas Distribuídos
flowchart LR
CB["1. Circuit Breaker\n(Fast-Fail e Proteção)"] --> SAGA["2. Saga Pattern\n(Rollback Distribuído)"] --> OUTBOX["3. Outbox & CQRS\n(Atomicidade e Escala)"]
style CB fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style SAGA fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style OUTBOX fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
🎯 Slide 1: O Padrão Circuit Breaker
-
Objetivo: Evitar que a falha de um serviço externo derrube todos os microsserviços chamadores em efeito dominó.
-
Estados:
CLOSED(Normal) $\rightarrow$OPEN(Fast-Fail imediato com fallback) $\rightarrow$HALF-OPEN(Sondagem de recuperação). - Cooldown: Permite que serviços downstream sobrecarregados se estabilizem sem receber bombardeio de requisições.
🎯 Slide 2: O Padrão Saga (Transações Distribuídas)
-
Problema: Em microsserviços com bancos isolados (Database-per-Service), não existe
BEGIN TRANSACTIONglobal. - Orquestração vs Coreografia:
- Orquestrada: Um coordenador central comanda a esteira passo a passo.
-
Coreografada: Cada serviço reage a eventos emitidos pelos outros.
- Transações Compensatórias: Revertem logicamente cada etapa em caso de falha a meio caminho.
🎯 Slide 3: Transactional Outbox & CQRS
-
Outbox Pattern: Salva a entidade e o evento na mesma transação atômica do banco local, sendo repassado ao Kafka por um Relay.
- CQRS: Isola os modelos de escrita (Commands com regras de negócio rígidas) dos modelos de leitura (Queries com views desnormalizadas).
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim