O que é um Diagrama de Container C4?
O diagrama de container éNível 2no modelo C4 de Simon Brown. Ele se aprofunda em um único sistema de software (definido no Nível 1 – Contexto do Sistema) para mostrar:

-
Oformato de alto nívelda arquitetura dentro dos limites do seu sistema.
-
Unidades principaisunidades implantáveis/executáveischamadascontainers.
-
Escolhas de tecnologiapara cada container.
-
Como os containersinteragementre si e com atores/sistemas externos.
Importante esclarecimento: Um “container” no C4não énecessariamente um container Docker. É qualquer unidade separadamente implantável/executável que execute código ou armazene dados. Exemplos:
-
Aplicação web / Aplicação de página única (SPA)
-
Aplicativo móvel
-
API do lado do servidor / microserviço
-
Banco de dados (esquema)
-
Armazenamento de arquivos (bucket S3, pasta do sistema de arquivos)
-
Broker de mensagens / fila (quando modelado explicitamente)
-
Aplicativo de desktop / CLI
-
Processo em lote / tarefa agendada
O diagrama permanecede alto nível — sem detalhes internos de classes ou código (isso é Nível 3 de Componentes ou Nível 4 de Código).
Quando criar um diagrama de container
Crie (e mantenha) um diagrama de container quando:
-
Você já concluiu (ou pelo menos esboçou) o Diagrama de Contexto do Sistema diagrama e precisar responder: “Quais são os principais blocos de construção dentro do nosso sistema?”
-
Onboarding de novos desenvolvedores, arquitetos ou equipe de operações — eles precisam entender rapidamente a pilha de tecnologias e as responsabilidades de alto nível.
-
Tomando decisões significativas de tecnologia ou arquitetura (monolito → microsserviços, adição de aplicativo móvel, escolha de banco de dados, introdução de filas de mensagens, migração para nuvem).
-
Documentação para auditorias, conformidade, revisões de segurança ou resposta a incidentes (ajuda a mostrar a superfície de ataque e fluxos de dados).
-
Você quer “arquitetura como código” que reside no repositório e evolui com o sistema.
-
A maioria das equipes para aqui — Simon Brown ele mesmo observa que Contexto do Sistema + Container diagramas são suficientes para a maioria das equipes de software. Só vá mais fundo (Componentes/Código) quando a complexidade dentro de um container justificar isso.
Pule ou adie se:
-
O sistema é extremamente simples (um processo + banco de dados).
-
Você está em uma fase muito inicial de ideação e precisa apenas do contexto geral.
Por que usar diagramas de container? (Principais benefícios)
-
Clareza para diferentes públicos
Desenvolvedores veem tecnologias e pontos de integração.
Equipes de Ops/infra veem unidades implantáveis e caminhos de comunicação.
Arquitetos veem limites de responsabilidade e riscos de dívida técnica.
Gerentes veem uma visão suficientemente neutra em relação à tecnologia, mas ainda concreta. -
Evita o problema do “um grande diagrama”
Evita jogar tudo (usuários + infraestrutura + classes + ícones de nuvem) em uma única imagem sobrecarregada. -
Destaca decisões importantes
Exibe claramente escolhas como SPA + API + banco de dados relacional vs. renderização do lado do servidor + NoSQL, ou síncrono vs. baseado em eventos. -
Comunicação e colaboração
Atua como um mapa compartilhado durante sessões de design, pós-análises de incidentes, modelagem de ameaças e planejamento estratégico. -
Documentação viva
Quando escrito em PlantUML / Structurizr DSL / semelhantes → versionado no Git, regenerado automaticamente no CI, sempre atualizado.
Como criar um ótimo diagrama de contêineres (Passo a passo + Melhores práticas)
-
Comece pelo Nível 1
Copie Pessoas + Sistemas de Software externos do diagrama de contexto — eles se tornam atores que interagem com seus contêineres. -
Desenhe a Fronteira do Sistema
UseFronteira_Sistemano PlantUML para delimitar claramente “dentro do nosso sistema”. -
Identifique os Contêineres
Pergunte: Quais são as coisas separadamente executáveis/implantáveis que entregam a funcionalidade do sistema?
Padrões comuns:-
SPA Web ↔ Backend da API ↔ Banco de dados
-
Aplicativo móvel ↔ Backend para frontend (BFF) ↔ Serviços compartilhados
-
Microserviços com broker de mensagens
-
Monólito legado + nova camada de API
-
-
Adicione Tecnologia e Descrição Breve
Cada contêiner deve mostrar: nome, tecnologia, propósito breve.
Mantenha as descrições com menos de 15 palavras. -
Defina Interações (Relacionamentos)
Mostre direção + protocolo + intenção (por exemplo, “JSON/HTTPS”, “Lê de e escreve para”, “Publica para”, “Consome de”).
Use verbos nos relacionamentos. -
Melhores práticas
-
Mantenha-o legível — busque menos de 10–12 contêineres. Se houver mais → crie visualizações focadas (por exemplo, “contêineres do subsistema API”).
-
Seja consistente — mesma direção de layout (de cima para baixo/esquerda para direita), mesmo nível de detalhe.
-
Use ícones/sprites — adicione destaque visual (o PlantUML suporta devicons, font-awesome, etc.).
-
Legenda e chave — ative a legenda automática no PlantUML.
-
Evite aglomeração — omita filas/tópicos se eles não adicionarem valor; rotule os protocolos nas setas em vez disso.
-
Versão e armazene como código — faça commit dos arquivos .puml no repositório.
-
Adaptação para o público-alvo — uma versão para desenvolvedores (tecnologia detalhada), versão mais leve para interessados.
-
Exemplo do PlantUML – Sistema Clássico de Banco na Internet (estilo Big Bank plc)
Aqui está um exemplo limpo e de qualidade de produção usando a biblioteca oficial C4-PlantUML.
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
' Opcional: adicione ícones atraentes (dos sprites do tupadr3)
!include https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons/angular.puml
!include https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons/java.puml
!include https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons/postgresql.puml
!include https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons/android.puml
title Diagrama de Contêiner: Sistema de Banco na Internet
Person(customer, "Cliente de Banco Pessoal", "Um cliente da Big Bank plc")
System_Boundary(c1, "Sistema de Banco na Internet") {
Container(spa, "Aplicativo de Página Única", "JavaScript & Angular", "Fornece todas as funcionalidades de banco na internet para os clientes por meio de seu navegador web", $sprite="angular")
Container(mobile, "Aplicativo Móvel", "Android/iOS (React Native)", "Funcionalidades limitadas de banco na internet", $sprite="android")
Container(api, "Aplicativo de API", "Java & Spring Boot", "Fornece funcionalidades de banco na internet por meio de API", $sprite="java")
ContainerDb_Ext(db, "Banco de Dados de Banco", "PostgreSQL", "Armazena preferências do usuário, dados em cache, sessões (as contas principais/transações permanecem no mainframe)", $sprite="postgresql")
}
System_Ext(core, "Sistema de Banco Central", "Sistema mainframe – existente")
System_Ext(email, "Sistema de E-mail", "Envia e-mails (por exemplo, AWS SES)")
Rel(customer, spa, "Usa", "HTTPS")
Rel(customer, mobile, "Usa", "HTTPS")
Rel(spa, api, "Chama", "JSON/HTTPS")
Rel(mobile, api, "Chama", "JSON/HTTPS")
Rel(api, db, "Lê e escreve em", "JDBC/SQL")
Rel(api, core, "Usa", "JSON/HTTPS")
Rel(api, email, "Envia e-mail usando", "HTTPS")
LAYOUT_WITH_LEGEND()
LAYOUT_TOP_DOWN()
@enduml
Isso gera um diagrama limpo com:
-
Fronteira do sistema
-
Rótulos de tecnologia
-
Sprites/ícones
-
Relacionamentos claros
-
Legenda
Você pode colá-lo diretamente no servidor online do PlantUML ou em qualquer IDE/editor compatível.
Use esta estrutura como modelo — substitua os elementos pelos nomes, tecnologias e fluxos do seu próprio sistema. Para estilos mais avançados (temas, cores personalizadas), verifique as amostras do C4-PlantUML no GitHub.
Feliz diagramação — e lembre-se: o objetivo écomunicação eficaz, não a perfeição do UML!
Recursos do Diagrama de Contêiner C4
- Guia Definitivo para a Visualização do Modelo C4 Usando Ferramentas de IA do Visual Paradigm: Este guia explica como aproveitar ferramentas com IA para automatizar e aprimorar a visualização do modelo C4, acelerando o design de arquitetura de software.
- Aproveitando o Estúdio C4 com IA do Visual Paradigm para Documentação de Arquitetura Simplificada: Este artigo detalha o uso de um estúdio aprimorado com IA para criar documentação de arquitetura de software limpa, escalável e sustentável.
- O Guia Definitivo para o Estúdio C4-PlantUML: Revolucionando o Design de Arquitetura de Software: Este recurso explora a combinação da automação impulsionada por IA, a clareza do modelo C4 e a flexibilidade do PlantUML em uma única ferramenta poderosa.
- Um Guia Compreensivo sobre o Estúdio C4 PlantUML com IA do Visual Paradigm: Este guia descreve uma ferramenta desenvolvida especificamente, lançada no final de 2025, que transforma prompts de linguagem natural em diagramas C4 em camadas.
- C4-PlantUML Studio | Gerador de Diagramas C4 com Inteligência Artificial: Esta visão geral das funcionalidades destaca uma ferramenta impulsionada por IA projetada para gerar diagramas de arquitetura de software C4 a partir de descrições de texto simples.
- Gerando e Modificando Diagramas de Componentes C4 com o Chatbot de IA do Visual Paradigm: Este tutorial demonstra o uso de um chatbot com IA para criar e aprimorar iterativamente a arquitetura de nível de componente para sistemas complexos.
- Gerador de Diagramas C4 com IA: Níveis Principais e Visualizações de Apoio: Esta página explica como o gerador de IA apoia os quatro níveis principais do modelo C4 — Contexto, Container, Componente e Implantação — para fornecer documentação abrangente.
- Gerador de Diagramas com IA: Lançamento com Suporte Completo ao Modelo C4: Esta atualização detalha a integração de recursos com IA para a criação automatizada de diagramas hierárquicos do modelo C4.
- Gerador de Modelo C4 com IA: Automatizando todo o Ciclo de Modelagem: Este recurso destaca como um chatbot de IA especializado utiliza prompts conversacionais para garantir consistência na documentação de arquitetura para equipes DevOps.
- Revisão Abrangente: Chatbots de IA Genéricos vs. Ferramentas C4 do Visual Paradigm: Esta comparação explica por que ferramentas especializadas, como o C4 PlantUML Studio, fornecem resultados mais estruturados e de qualidade profissional do que modelos de linguagem de propósito geral.
This post is also available in Deutsch, English, Español, فارسی, Français, English, Bahasa Indonesia, 日本語, Polski, Ру́сский, Việt Nam, 简体中文 and 繁體中文.













