Visualize a arquitetura do seu sistema com C4 Model

Alexandre Liberato
stonetech
Published in
4 min readJul 8, 2021
imagem representando o mapa de uma cidade
Mapas

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!”

Diagramas de sistemas desenhados em quadros brancos

“Mas o problema é que faltou tempo e/ou ferramenta adequada!”

Diagramas de sistemas desenhados em softwares

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.

Planta baixa de uma casa

Agora peça para um desenvolvedor fazer o mesmo:

Planta baixa feita por um desenvolvedor de software

Boa comunicação = times melhores!

Público dos Diagramas

Arte de Sam Brinson

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
Notação do C4

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:

Saiba Mais

https://www.youtube.com/watch?v=x2-rSnhpw0g

--

--