Pular para conteúdo

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

  1. Registro Estruturado de Contexto: Documenta com números reais o problema técnico que motivou a intervenção arquitetural.
  2. Transparência nas Consequências Negativas: Reconhece os trade-offs e novas responsabilidades operacionais assumidas pela equipe.
  3. 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