Aula 20 - Projeto Capstone: Documento de Arquitetura e Engenharia Completo 🚀
Objetivo Pedagógico
Objetivo: Conceber e consolidar o Software Architecture Document (SAD) integral de um ecossistema corporativo distribuído: especificação de requisitos não-funcionais (SLOs/SLAs), diagramação arquitetural completa no C4 Model, matriz de rastreabilidade e estratégias de observabilidade.
📑 1. Fundamentos Teóricos & Análise Técnica
O Projeto Capstone de Engenharia de Software coroa a formação técnica e metodológica através da construção de um documento canônico de arquitetura (SAD): 1. Estrutura Canônica de um SAD Enterprise: - Declaração de Objetivos de Negócio e Contexto de Mercado. - Atributos de Qualidade (Disponibilidade, Latência, Segurança, Manutenibilidade). - Visão Arquitetural em Camadas e Padrões Estruturantes adotados. 2. O C4 Model como Linguagem Arquitetural Universal: - Nível 1: Contexto: Os sistemas e os atores humanos no ecossistema global. - Nível 2: Containers: Aplicações executáveis, serviços, bancos de dados e gateways. - Nível 3: Componentes: A organização interna de cada microsserviço ou container. - Nível 4: Código: Detalhamento em classes UML dos elementos mais críticos. 3. Matriz de Decisões e ADRs (Architectural Decision Records): - Registro formal do contexto, opções consideradas e justificativa técnica para as escolhas definitivas de engenharia.
📐 Arquitetura Conceitual & Diagrama de Fluxo
graph TD
SAD["Documento Canônico de Arquitetura (SAD Enterprise)"] --> Context["C4 Nível 1: Contexto Sistêmico"]
Context --> Containers["C4 Nível 2: Containers e Bancos"]
Containers --> Components["C4 Nível 3: Componentes e Interfaces"]
SAD --> Quality["Requisitos Não-Funcionais Mensuráveis (SLA / SLO)"]
SAD --> ADR["Decisões Arquiteturais Justificadas (ADR 001..N)"]
style SAD fill:#e1f5fe,stroke:#01579b
style Context fill:#fff3e0,stroke:#e65100
style Containers fill:#f3e5f5,stroke:#7b1fa2
style Quality fill:#e8f5e9,stroke:#2e7d32
style ADR fill:#e0f2f1,stroke:#00695c 🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais: - Rigor e Completude Arquitetural: Cobertura holística que alinha expectativas de clientes, diretores, desenvolvedores e operadores. - Rastreabilidade Fim a Fim: Demonstração clara de como cada escolha de infraestrutura satisfaz diretamente um requisito de negócio. - Preservação da Memória Técnica (ADRs): Garantia de que as razões de decisões arquiteturais históricas permaneçam compreensíveis para futuras equipes. - Excelência na Engenharia de Software: Materialização dos mais avançados padrões de confiabilidade, modularidade e manutenibilidade.
🛠️ 2. Implementação Prática em Engenharia de Software Corporativa, SAD e C4 Model
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// adr_template_microservices.md (Exemplo de Registro de Decisão Arquitetural - ADR)
# ADR 007: Adoção de Kafka para Comunicação Assíncrona de Pedidos
## Status
Aprovado (2026-09-05)
## Contexto
O aumento do tráfego do portal gerou lentidão crítica na finalização de compras devido a chamadas HTTP síncronas em cadeia para emissão fiscal, separação de estoque e disparo de e-mails. Quando o serviço fiscal apresenta instabilidade, as compras de clientes travam.
## Decisão
Decidimos adotar o **Apache Kafka** como espinha dorsal de mensageria assíncrona para todos os eventos de pedidos (`OrderCreated`, `OrderPaid`, `OrderCancelled`).
- O serviço de checkout publicará eventos no tópico `orders.events`.
- Todos os serviços downstream consumirão os eventos em seus próprios ritmos.
## Consequências
### Positivas
- **Desacoplamento Temporal**: A indisponibilidade de serviços terceiros não afeta a captura de novas vendas.
- **Performance**: Tempo de resposta do checkout reduzido de 1200ms para 45ms.
- **Auditoria Histórica**: O log imutável do Kafka permite reprocessar eventos do passado caso ocorram erros de faturamento.
### Negativas
- Necessidade de gerenciar a complexidade de um cluster Kafka e tópicos particionados.
- A consistência de dados passa a ser eventual (*Eventual Consistency*).
💡 Análise Passo a Passo do Código
- Registro Estruturado de Contexto: Documenta com números reais o problema técnico que motivou a intervenção arquitetural.
- Transparência nas Consequências Negativas: Reconhece os trade-offs e novas responsabilidades operacionais assumidas pela equipe.
- Imutabilidade da Decisão: Cria histórico auditável e imutável que orienta o crescimento da engenharia.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto