Aula 17 - Diagramação Avançada de Componentes e Implantação 🏗️
Objetivo Pedagógico
Objetivo: Conceber especificações formais de arquitetura de software utilizando Diagramas de Componentes e Diagramas de Implantação da UML 2.5 e relacioná-los aos níveis de Container e Deployment do C4 Model.
📑 1. Fundamentos Teóricos & Análise Técnica
A Unified Modeling Language (UML 2.5) provê a semântica gráfica padrão para modelar os aspectos estáticos e dinâmicos de sistemas complexos. Na dimensão estrutural física e lógica, dois diagramas são indispensáveis: 1. Diagrama de Componentes: - Modela a organização e as dependências entre os módulos de software substituíveis e autônomos (Componentes). - Portas e Interfaces: Interfaces Providas (Provided Interfaces - notação de pirulito / ball) representam os serviços expostos pelo componente, enquanto Interfaces Requeridas (Required Interfaces - notação de soquete / socket) representam os contratos que o componente consome de terceiros. 2. Diagrama de Implantação (Deployment Diagram): - Modela a arquitetura física de hardware e infraestrutura de execução: - Nós (Nodes): Dispositivos computacionais físicos ou virtuais (servidores, instâncias EC2, nós de cluster Kubernetes). - Ambientes de Execução (Execution Environments): Softwares de sistema que hospedam artefatos (contêineres Docker, JVM, servidores web). - Artefatos (Artifacts): O resultado concreto da compilação e empacotamento (arquivos .jar, imagens OCI, bundles JavaScript) alocados dentro dos nós. 3. Convergência com o C4 Model: - Os Diagramas de Componentes UML alinham-se ao Nível 3 (Component) do C4 Model, enquanto os Diagramas de Implantação correspondem com precisão ao Diagrama de Deployment do C4.
📐 Arquitetura Conceitual & Diagrama de Fluxo
graph TD
subgraph Nó Fisico: Servidor de Aplicação AWS us-east-1
subgraph Runtime: Cluster Kubernetes Worker
CompApp["Componente: OrderService (Imagem Docker OCI)"]
PortIn["Interface Provida: REST API (Porta 8080)"]
PortOut["Interface Requerida: Conexão PostgreSQL (Porta 5432)"]
PortIn --> CompApp
CompApp --> PortOut
end
end
subgraph Nó de Banco: AWS RDS Aurora Multi-AZ
DBEngine["Instância PostgreSQL Primária"]
end
PortOut -.-> DBEngine
style CompApp fill:#e1f5fe,stroke:#01579b
style PortIn fill:#fff3e0,stroke:#e65100
style PortOut fill:#f3e5f5,stroke:#7b1fa2
style DBEngine fill:#e8f5e9,stroke:#2e7d32 🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais: - Contratos por Interfaces Providas e Requeridas: Desacoplamento formal entre módulos que garante a intercambialidade de implementações. - Mapeamento Físico de Artefatos em Nós: Visibilidade inequívoca sobre onde cada binário ou contêiner é fisicamente executado em produção. - Comunicação de Protocolos de Rede: Especificação explícita de protocolos de transporte (TCP, TLS, gRPC) nas arestas de conexão entre nós. - Alinhamento com Arquitetura de Nuvem: Modelagem da resiliência através da distribuição de nós em múltiplas Zonas de Disponibilidade (Multi-AZ).
🛠️ 2. Implementação Prática em UML 2.5, Arquitetura de Software 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:
// deployment_component_diagram.mermaid (Diagrama de Componentes e Implantação Físico-Lógica)
graph TB
subgraph CloudEnv["Infraestrutura de Nuvem (VPC Protegida)"]
subgraph K8sCluster["Cluster Kubernetes EKS"]
subgraph PodFrontend["Pod: Web App"]
CompWeb["Component: React SPA (Nginx Container)"]
end
subgraph PodBackend["Pod: Core API"]
CompAPI["Component: NestJS Order Engine"]
IntREST["Provided Interface: /api/v1 (HTTP/2)"]
IntQueue["Required Interface: AMQP Connection"]
end
end
subgraph ManagedServices["Serviços Gerenciados Cloud"]
CompQueue["Broker: RabbitMQ Cluster"]
CompDB["Database: PostgreSQL RDS Aurora"]
end
end
CompWeb --> IntREST
IntREST --> CompAPI
CompAPI --> IntQueue
IntQueue --> CompQueue
CompAPI -->|Conexão TCP/SSL 5432| CompDB 💡 Análise Passo a Passo do Código
- Encapsulamento em Subgrafos: Representa as fronteiras físicas de containers, clusters Kubernetes e VPCs de nuvem.
- Interfaces Requeridas e Providas: Explicita formalmente os canais de entrada e saída do componente central de negócio.
- Rotulação de Protocolos e Portas: Documenta para a equipe de infraestrutura e redes exatamente quais portas devem ser abertas em firewalls.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto