Identificação
Resumo
A aula 9 consolida o módulo 6 com boas práticas maduras para arquiteturas orientadas a serviço na nuvem. Saímos do "como modelar" (aulas 3-7) e do "como integrar" (aula 8) e entramos no "como rodar bem em produção": 12-Factor App, idempotência e retry, padrões de resiliência (circuit breaker, timeout, bulkhead), containers e Kubernetes, autoscaling e load balancing, API Gateway vs Service Mesh, gestão de secrets e FinOps básico.
O fechamento é uma atividade prática em grupo: cada equipe escolhe 3 padrões, documenta no repositório, evolui o diagrama de arquitetura da aula 3 e cruza cada padrão com os RNFs já listados. Não há ponderada — é prática boa que prepara a equipe para a entrega final do módulo.
Objetivos de aprendizagem
- OA-1Identificar os 6 fatores mais críticos do 12-Factor App para serviços em containers e citar antipadrões comuns.
- OA-2Aplicar idempotência via
Idempotency-Keye UPSERT em endpoints de escrita. - OA-3Combinar Timeout + Retry + Circuit Breaker + Bulkhead para sobreviver a falhas de dependência.
- OA-4Justificar o uso de containers e Kubernetes (paridade dev/prod, self-healing, autoscaling).
- OA-5Diferenciar API Gateway (north-south) de Service Mesh (east-west) e dizer quando cada um se aplica.
- OA-6Reconhecer antipadrões de secrets e propor cofre gerenciado (Vault/Secrets Manager/Key Vault) com rotação.
- OA-7Avaliar trade-offs de custo cloud (compute, storage, egress, spot/reserved) e propor alertas.
- OA-8Documentar 3 padrões aplicáveis ao projeto do parceiro com snippet de código e cruzamento com RNFs.
Pré-requisitos
- Aula 3 concluída: arquitetura SOA do projeto desenhada e RNFs listados.
- Aulas 5 e 8 concluídas: backend MVC + integração entre serviços.
- Repositório do grupo com pasta
docs/ativa e diagrama de arquitetura versionado.
Cronograma do dia
📚 Bloco 1 · Autoestudo
10h00 — 12h00Estudo individual orientado pelo material da aula 9.
- Leitura completa do Material da Aula 9 (vocabulário do dia: 12-factor, idempotência, retry, circuit breaker, secrets, FinOps).
- Estudar os 12 fatores em 12factor.net; anotar 3 que o backend do projeto já cumpre e 3 que ainda violam.
- No backend do parceiro, escolher 1 chamada externa (DB, API, fila) e responder: o que acontece se ela falhar? O retry pode duplicar dados?
- Caderno de bordo: anotar dúvidas concretas sobre custo cloud / rotação de secrets / circuit breaker.
📚 Leituras sugeridas:
- The Twelve-Factor App — Adam Wiggins (Heroku)
- Circuit Breaker Pattern — Microsoft Cloud Patterns
- AWS Well-Architected Framework
- Microsoft Cloud Adoption Framework
- Polly docs — biblioteca .NET de resiliência
🎓 Bloco 2 · Instrução PE — Aula em metodologia ativa
14h00 — 16h00Encontro síncrono com o professor especialista.
- 14h00 — 14h15 · Daily.
- 14h15 — 14h55 · Teoria + exemplos cloud (40 min): 8 padrões com snippets reais.
- 14h55 — 16h00 · Atividade prática em sala (1h05) —
cloud-practices.mdem grupo.
🍴 Intervalo · Almoço
12h00 — 14h00Janela livre.
🛠️ Bloco 3 · Desenvolvimento do projeto
16h00 — 18h00Janela de continuidade da prática.
- Finalizar
docs/cloud-practices.mdcom os 3 padrões escolhidos pelo grupo. - Atualizar o diagrama de arquitetura (evolução do diagrama da aula 3).
- ⭐ Excelência: implementar 1 padrão de fato em código (ex.: Circuit Breaker com Polly + teste de integração que prova o break).
- Abrir Merge Request
feat(cloud): boas práticas SOAno repositório do grupo.
Detalhamento da instrução PE (14h00 — 16h00)
14h15
DailyDaily de abertura
Cada aluno apresenta em 1 minuto: 1 falha de rede que derrubou o serviço / 1 secret que quase vazou / 1 dúvida sobre custo cloud.
14h25
Talk12-Factor App + Idempotência
Visão geral dos 12 fatores, destaque para os 6 críticos em SOA cloud (III, VI, VII, IX, X, XI) e padrão Idempotency-Key com exemplo HTTP de pagamento.
14h40
TalkResiliência · Circuit Breaker e padrões
Diagrama de estados Closed → Open → Half-Open. Snippet C# com Polly. Combinação Timeout + Retry + Circuit Breaker + Bulkhead num único pipeline.
14h55
CodingContainers, autoscaling, gateway/mesh, secrets, FinOps
Walkthrough rápido com snippets reais (Dockerfile multi-stage, HPA YAML, ExternalSecret YAML). Diferenciar API Gateway de Service Mesh e introduzir 3 dimensões de custo cloud.
15h10
AtivaBriefing da atividade + escolha dos 3 padrões
Cada grupo escolhe 3 dos 8 padrões. Professor passa nas mesas validando escolhas (forçando diversidade quando todos escolhem só circuit breaker, por exemplo).
15h45
AtivaProdução em grupo · cloud-practices.md
Grupos escrevem o documento (descrição em 3 frases, onde aplica, snippet de prova), atualizam o diagrama de arquitetura da aula 3 marcando onde cada padrão entra e cruzam com a lista de RNFs.
16h00
AtivaApresentação rápida + síntese
Se houver tempo, cada grupo apresenta em 3 minutos os padrões escolhidos. Cada aluno escreve "a aula 9 me ensinou que...". Anuncia-se a continuidade na janela de dev (16h–18h) e a aula 10.
Estratégias de metodologia ativa
- Padrão como contrato — equipes não saem com lista de padrões; saem com 3 padrões aplicados ao projeto, cada um com snippet e RNF correspondente.
- Diversidade forçada — professor evita que todos os grupos peguem os 3 mesmos padrões; quem ataca FinOps ou Service Mesh expande o repertório coletivo.
- Apresentação cruzada — o que um grupo produz vira repertório para os outros, ampliando aprendizado sem repetir conteúdo.
Boas práticas SOA cloud não são ideologia — são resposta a falha que já aconteceu. Cada padrão de hoje existe porque algum sistema caiu sem ele.
Recursos e ferramentas
| Categoria | Recurso | Uso |
|---|---|---|
| Slides | slides/slide-lesson-9.html | Exposição na instrução PE |
| Material | materials/lesson-9-material.html | Autoestudo |
| Linguagem/stack | C# / .NET 8 + Docker + Kubernetes (YAML) | Snippets de prova de conceito |
| Bibliotecas | Polly (resiliência .NET) | Circuit Breaker, Retry, Timeout, Bulkhead |
| Documento | docs/cloud-practices.md | Entrega do grupo · 3 padrões aplicados |
| Diagrama | Diagrama de arquitetura da aula 3 (evoluído) | Marcar onde cada padrão entra |
Verificação de aprendizagem
- CR-1Cada grupo escolheu 3 dos 8 padrões e justificou aplicação no projeto do parceiro.
- CR-2Documento
docs/cloud-practices.mdtraz, para cada padrão, descrição em 3 frases + onde aplica + snippet de prova de conceito. - CR-3Diagrama de arquitetura atualizado (a partir do da aula 3) marcando onde cada padrão entra.
- CR-4Cada padrão escolhido foi cruzado com RNFs já listados (referência cruzada com aula 3).
- CR-5Merge Request
feat(cloud): boas práticas SOAaberto até 18h00 com o documento e o diagrama atualizados. - CR-6 ⭐Excelência: 1 padrão implementado de fato em código (ex.: Circuit Breaker com Polly + teste de integração que prova o break depois de 5 falhas).
Grupo que sair às 18h sem 3 padrões documentados + diagrama atualizado + cruzamento com RNFs está em débito técnico para a aula 10 (observabilidade).
Conexão com a aula 10
A aula 10 fecha o módulo com Monitoramento e Logging — sem observabilidade, todos os padrões de hoje viram caixa-preta. Você sabe que tem retry, circuit breaker e autoscaling, mas não tem como provar se estão funcionando, nem detectar quando falham silenciosamente.
- Cada padrão escolhido hoje precisa de uma métrica que prove sua eficácia (ex.: taxa de circuit-open, latência p99, fila absorvida pelo autoscaler).
- Os RNFs cruzados na atividade de hoje viram SLOs mensuráveis na aula 10.
- Logs em stream (12-Factor XI) são pré-requisito para a stack de observabilidade da aula 10.
Antes das 10h: ler o material da aula 10, listar 3 métricas que provariam que cada padrão escolhido hoje está funcionando, e revisar conceitos de logs estruturados, métricas e tracing distribuído.