Exemplo Internet Banking C4 Model

Se preferir começar por um resumo, peça um TL;DR ao ChatGPT ou ao Claude .

Índice

  1. Nível 1 — Diagrama de contexto
  2. Nível 2 — Diagrama de containers
  3. Limitações do exemplo
  4. Referências

Nível 1 — Diagrama de contexto

O primeiro diagrama mostra o Internet Banking como uma única unidade e identifica as pessoas e os sistemas externos com os quais ele se relaciona. Neste nível, ainda não são mostradas as aplicações internas.

C4Context
title Internet Banking — Contexto simplificado

Person(cliente, "Cliente", "Usuário do banco")
System(sistema, "Internet Banking", "Acessa contas e realiza pagamentos")

System_Ext(core, "Core Bancário", "Sistema principal do banco")
System_Ext(email, "Sistema de E-mail", "Envia notificações")

Rel(cliente, sistema, "Usa")
Rel(sistema, core, "Consulta dados e executa operações bancárias")
Rel(sistema, email, "Solicita o envio de notificações")

Nível 2 — Diagrama de containers

Para ampliar o sistema, este exemplo assume duas aplicações executadas separadamente: uma aplicação web usada pelo cliente e uma API responsável pelos casos de uso. Também assume acesso por HTTPS e comunicação HTTPS/JSON entre essas aplicações. O Core Bancário e o Sistema de E-mail continuam fora da fronteira do Internet Banking.

Essas aplicações são hipóteses didáticas. O exemplo não inclui banco próprio, filas ou frameworks específicos porque essas decisões não estão presentes no material de origem.

C4Container
title Internet Banking — Containers do cenário didático

Person(cliente_container, "Cliente", "Usuário do banco")
System_Ext(core_container, "Core Bancário", "Sistema principal do banco")
System_Ext(email_container, "Sistema de E-mail", "Envia notificações")

System_Boundary(internet_banking, "Internet Banking") {
    Container(web, "Aplicação Web", "Aplicação cliente", "Apresenta contas, pagamentos e resultados ao cliente")
    Container(api, "API Internet Banking", "Aplicação server-side", "Executa os casos de uso e integra com sistemas externos")
}

Rel(cliente_container, web, "Acessa", "HTTPS")
Rel(web, api, "Solicita dados e operações", "HTTPS/JSON")
Rel(api, core_container, "Consulta dados e executa operações bancárias")
Rel(api, email_container, "Solicita o envio de notificações")

No modelo C4, um container representa uma aplicação ou um data store. Classes, módulos e serviços internos da API pertencem a um eventual diagrama de componentes, não a este nível.

Limitações do exemplo

O diagrama não informa como autenticação, autorização, persistência local, auditoria, disponibilidade ou recuperação são implementadas. Essas decisões precisam ser adicionadas quando existirem requisitos ou evidências que as sustentem.

A sintaxe C4 do Mermaid ainda é marcada como experimental e pode mudar entre versões. O nível de abstração do diagrama deve permanecer o mesmo mesmo que a ferramenta de renderização seja substituída.

Referências