Visualize a arquitetura do seu sistema com C4 Model
C4 Model
Website: https://c4model.com/
Inspirado em UML e 4+1 Model, foi criado e melhorado ao longo do tempo para ajudar a visualizar a arquitetura de sistemas e aproximar o modelo do sistema com o código.
Principais lemas
- Foco nas estruturas estáticas (componentes)
- Abstrações e não notações (mapas)
- Engenharia e não arte. Não use Visio, use Plantuml
Quem usa UML?
Desculpas para não usar:
- “Nem todos sabem UML no time”
- “Vou parecer velho”
- “Ferramentas ruins”
- “Muito detalhado”
- “É uma bela forma de perder tempo”
- “Agile não precisa documentar”
- “O valor ta na conversa”, daí a conversa é só sobre ficar até mais tarde…
- “O valor tá no código”, daí você olha o código e…
Com a chegada das metodologias ágeis, os profissionais da área têm buscado simplificar e usar formas mais simples de modelagem:
“Use um quadro branco!”
“Mas o problema é que faltou tempo e/ou ferramenta adequada!”
Alguns problemas dos diagramas atuais:
- Tamanhos e cores diferentes
- Falta de legenda e descrição
- Não padronização
- Abreviações
- Falta de títulos
Por quê?
- Troca de pessoas + rotatividade = informação pro ralo
- Visualização auxilia no entendimento
Peça para um arquiteto desenhar a sua casa. O que terá? Sim, a planta baixa da sua casa. Você, uma pessoa que não é formada em arquitetura, conseguirá entender todo contexto, principais ideias da planta, consegue localizar portas, janelas, fluxos e etc.
Agora peça para um desenvolvedor fazer o mesmo:
Boa comunicação = times melhores!
Público dos Diagramas
Temos que ter em mente que o público de nossos diagramas pode ser amplo, desde um cargo gerencial ou presidencial, até uma pessoa que acabou de entrar na empresa. Ou seja, não vão ser apenas ‘devs’ que iram precisar olhar e entender esses diagramas para poder tomar decisões.
Mapas
Olhe o mapa da sua cidade ou o imagine. O que vai notar?
- Igrejas
- Hospitais
- Ferrovias
- Estradas
- Estações de metrô
- Museus
Olhe o mapa de outra cidade e perceba como as mesmas abstrações estarão presentes, apenas com notações diferentes (fontes, linhas cores, formatos)
Como funciona?
Abstrações hierárquicas / Agrupamentos
- Contamos uma história linear de C1 até C4, ou seja, a história continua ao dar o zoom.
- O C4 Model é uma estrutura estática. Uma vez definido, pode-se criar outras documentações mais específicas, como diagramas de sequência, ER, BP, etc.
4Cs
C1 — Contexto | Overview | Continente
C2 — Containers | Overview | Estado
C3 — Componentes | Zoom | Cidade
C4 — Código | Detalhes | Foto da rua
O C4 não é recomendado devido ao detalhamento. Isso pode ser usado com uma ferramenta que gere essa doc, por exemplo.
Notação
- Use títulos
- Coloque descrições do que o sistema faz
Quando usar?
- Se seu diagrama tem mais de ~20 elementos, pode ser melhor dividí-los nas camadas do C4 para melhor entendimento.
Exemplo
Level 1 — Contexto
Sistemas, usuários e dependências
Level 2 — Containers
Arquitetura geral e escolhas de tecnologias
Level 3 — Componentes
Componentes lógicos e interações
Level 4 — Classes
Visão geral (time), é um L1 de Contexto sem foco em apenas um sistema: