🏛️ Cap 08: Arquitetura como Código: O Modelo C4, PlantUML e D2 em Markdown
🗺️ Os Quatro Níveis de Abstração do Modelo C4 (Simon Brown)
flowchart TD
L1["Nível 1: Contexto do Sistema (System Context)\nA visão de satélite: usuários, sistemas externos e fronteiras"]
--> L2["Nível 2: Containers\nAplicações web, apps móveis, microsserviços e bancos de dados"]
L2 --> L3["Nível 3: Componentes\nMódulos internos, controladores, serviços de domínio e adaptadores"]
L3 --> L4["Nível 4: Código\nClasses, interfaces e diagramas de implementação detalhada"]
style L1 fill:#ede7f6,stroke:#512da8,stroke-width:2px
style L2 fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
style L3 fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style L4 fill:#fff3e0,stroke:#ff9800,stroke-width:2px
📖 Fundamentos e Aplicação
Diagramas de arquitetura tradicionais criados em ferramentas visuais como Visio ou Draw.io sofrem de “deterioração silenciosa”: no momento em que são exportados como PNG e inseridos em um PDF, já estão desatualizados em relação ao código em produção.
O paradigma Architecture-as-Code (AaC) integra os diagramas diretamente aos arquivos .md do repositório, garantindo versionamento com Git e validação em pipelines de CI/CD.
Ferramentas e Padrões Principais:
- Modelo C4: Padroniza a comunicação técnica em 4 níveis hierárquicos com zoom progressivo (Contexto, Containers, Componentes e Código).
- Mermaid C4 Syntax: Suporte experimental nativo a diagramas de Contexto e Container (
C4Context,C4Container). - Linguagem D2 e PlantUML: DSLs avançadas para diagramação declarativa com posicionamento ortogonal automático e renderização vetorial SVG de alta qualidade.