¿Qué es un diagrama de contenedores C4?
El diagrama de contenedores esNivel 2en el modelo C4 de Simon Brown. Se enfoca en un único sistema de software (definido en el Nivel 1 – Contexto del sistema) para mostrar:

-
La forma de alto nivelde la arquitectura dentro de los límites de su sistema.
-
Unidades principales unidades desplegables/ejecutablesllamadas contenedores.
-
Elecciones tecnológicaspara cada contenedor.
-
Cómo interactúan los contenedores interactúanentre sí y con actores/sistemas externos.
Aclaración importante: Un «contenedor» en C4 no esnecesariamente un contenedor de Docker. Es cualquier unidad desplegable/ejecutable por separado que ejecute código o almacene datos. Ejemplos:
-
Aplicación web / Aplicación de página única (SPA)
-
Aplicación móvil
-
API del lado del servidor / microservicio
-
Base de datos (esquema)
-
Almacenamiento de archivos (cubo de S3, carpeta del sistema de archivos)
-
Broker de mensajes / cola (cuando se modela explícitamente)
-
Aplicación de escritorio / CLI
-
Proceso por lotes / trabajo programado
El diagrama permanece de alto nivel — sin detalles internos de clases o código (eso corresponde a Componentes de Nivel 3 o Código de Nivel 4).
Cuándo crear un diagrama de contenedores
Cree (y mantenga) un diagrama de contenedores cuando:
-
Ha completado (o al menos bosquejado) el Contexto del sistema diagrama y necesita responder: “¿Cuáles son los bloques principales dentro de nuestro sistema?”
-
Integración de nuevos desarrolladores, arquitectos o personal de operaciones — necesitan comprender rápidamente la pila tecnológica y las responsabilidades de alto nivel.
-
Tomando decisiones importantes de tecnología o arquitectura (monolito → microservicios, añadir aplicación móvil, elegir base de datos, introducir colas de mensajes, migración a la nube).
-
Documentación para auditorías, cumplimiento, revisiones de seguridad o respuesta a incidentes (ayuda a mostrar el área de ataque, flujos de datos).
-
Quieres “arquitectura como código” que resida en el repositorio y evolucione con el sistema.
-
La mayoría de los equipos se detienen aquí — Simon Brown mismo señala que Contexto del sistema + contenedores diagramas son suficientes para la mayoría de los equipos de software. Solo profundice (Componentes/Código) cuando la complejidad dentro de un contenedor lo justifique.
Omita o posponga si:
-
El sistema es extremadamente simple (un proceso + base de datos).
-
Está haciendo una ideación muy temprana y solo necesita el contexto general.
¿Por qué usar diagramas de contenedores? (Principales beneficios)
-
Claridad para diferentes audiencias
Los desarrolladores ven tecnologías y puntos de integración.
Los equipos de Ops/infra ven unidades desplegables y rutas de comunicación.
Los arquitectos ven límites de responsabilidad y riesgos de deuda técnica.
Los gerentes ven una visión suficientemente neutral respecto a la tecnología pero concreta. -
Evita el problema del “un gran diagrama”
Evita cargar todo (usuarios + infraestructura + clases + íconos de nube) en una sola imagen sobrecargada. -
Destaca decisiones clave
Exponen claramente decisiones como SPA + API + base de datos relacional frente a renderizado del lado del servidor + NoSQL, o sincrónico frente a basado en eventos. -
Comunicación y colaboración
Actúa como un mapa compartido durante las sesiones de diseño, análisis de incidentes, modelado de amenazas y planificación estratégica. -
Documentación viviente
Cuando se escribe en PlantUML / Structurizr DSL / similar → versionado en Git, regenerado automáticamente en CI, siempre actualizado.
Cómo crear un diagrama de contenedores excelente (paso a paso + mejores prácticas)
-
Comienza desde el nivel 1
Copia Personas + Sistemas de software externos desde el diagrama de contexto — se convertirán en actores que interactúan con tus contenedores. -
Dibuja el límite del sistema
UsaLímite_del_sistemaen PlantUML para delimitar claramente “dentro de nuestro sistema”. -
Identifica los contenedores
Pregunta: ¿Qué cosas independientemente ejecutables/desplegables entregan la funcionalidad del sistema?
Patrones comunes:-
SPA web ↔ backend de API ↔ base de datos
-
Aplicación móvil ↔ backend para frontend (BFF) ↔ servicios compartidos
-
Microservicios con broker de mensajes
-
Monolito heredado + capa de API nueva
-
-
Añade tecnología y descripción breve
Cada contenedor debe mostrar: nombre, tecnología, propósito breve.
Mantén las descripciones con menos de 15 palabras. -
Define interacciones (relaciones)
Muestra dirección + protocolo + intención (por ejemplo, “JSON/HTTPS”, “Lee de y escribe en”, “Publica en”, “Consume de”).
Usa verbos en las relaciones. -
Mejores prácticas
-
Manténlo legible — apunta a menos de 10–12 contenedores. Si hay más → crea vistas enfocadas (por ejemplo, “contenedores del subsistema de API”).
-
Sé consistente — misma dirección de disposición (de arriba abajo/de izquierda a derecha), mismo nivel de detalle.
-
Usa íconos/sprites — añade impacto visual (PlantUML admite devicons, font-awesome, etc.).
-
Leyenda y clave — habilitar la leyenda automática en PlantUML.
-
Evitar el desorden — omitir colas/temas si no aportan valor; etiquetar los protocolos en las flechas en su lugar.
-
Versión y almacenar como código — confirmar archivos .puml en el repositorio.
-
Adaptación al público objetivo — una versión para desarrolladores (tecnología detallada), versión más ligera para interesados.
-
Ejemplo de PlantUML – Sistema clásico de banca en línea (estilo Big Bank plc)
Aquí tienes un ejemplo limpio y de producción utilizando la biblioteca oficial C4-PlantUML.
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
' Opcional: agregar iconos atractivos (desde sprites de 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
título Diagrama de contenedores: Sistema de banca en línea
Persona(cliente, "Cliente de banca personal", "Un cliente de Big Bank plc")
Límite_de_sistema(c1, "Sistema de banca en línea") {
Contenedor(spa, "Aplicación de página única", "JavaScript & Angular", "Proporciona todas las funcionalidades de banca en línea a los clientes a través de su navegador web", $sprite="angular")
Contenedor(móvil, "Aplicación móvil", "Android/iOS (React Native)", "Funcionalidades limitadas de banca en línea", $sprite="android")
Contenedor(api, "Aplicación de API", "Java & Spring Boot", "Proporciona funcionalidades de banca en línea mediante API", $sprite="java")
ContenedorDb_Ext(base, "Base de datos de banca", "PostgreSQL", "Almacena preferencias del usuario, datos en caché, sesiones (los cuentas y transacciones principales permanecen en el mainframe)", $sprite="postgresql")
}
Sistema_Ext(núcleo, "Sistema de banca central", "Sistema mainframe – existente")
Sistema_Ext(correo, "Sistema de correo", "Envía correos electrónicos (por ejemplo, AWS SES)")
Rel(cliente, spa, "Utiliza", "HTTPS")
Rel(cliente, móvil, "Utiliza", "HTTPS")
Rel(spa, api, "Llama", "JSON/HTTPS")
Rel(móvil, api, "Llama", "JSON/HTTPS")
Rel(api, base, "Lee y escribe en", "JDBC/SQL")
Rel(api, núcleo, "Utiliza", "JSON/HTTPS")
Rel(api, correo, "Envía correo usando", "HTTPS")
LAYOUT_CON_LEYENDA()
LAYOUT_DE_ARIBA_A_ABAJO()
@enduml
Esto genera un diagrama limpio con:
-
Límite del sistema
-
Etiquetas de tecnología
-
Sprites/iconos
-
Relaciones claras
-
Leyenda
Puedes pegarlo directamente en el servidor en línea de PlantUML o en cualquier IDE/editor compatible.
Utiliza esta estructura como plantilla — reemplaza los elementos con los nombres, tecnologías y flujos de tu propio sistema. Para un estilo más avanzado (temas, colores personalizados), consulta las muestras de GitHub de C4-PlantUML.
¡Feliz diagramación — y recuerda: el objetivo es una comunicación efectiva, no la perfección de UML!
Recurso de diagrama de contenedores C4
- Guía definitiva para la visualización del modelo C4 usando herramientas de IA de Visual Paradigm: Esta guía explica cómo aprovechar herramientas impulsadas por IA para automatizar y mejorar la visualización del modelo C4, acelerando el diseño de arquitectura de software.
- Aprovechando el estudio C4 de IA de Visual Paradigm para una documentación de arquitectura más ágil: Este artículo detalla el uso de un estudio mejorado con IA para crear documentación de arquitectura de software limpia, escalable y mantenible.
- La guía definitiva para el estudio C4-PlantUML: revolucionando el diseño de arquitectura de software: Este recurso explora la combinación de automatización impulsada por IA, la claridad del modelo C4 y la flexibilidad de PlantUML en una sola herramienta poderosa.
- Una guía completa sobre el estudio C4 PlantUML impulsado por IA de Visual Paradigm: Esta guía describe una herramienta especializada lanzada a finales de 2025 que transforma las instrucciones en lenguaje natural en diagramas C4 con capas.
- C4-PlantUML Studio | Generador de diagramas C4 impulsado por IA: Esta vista general de características destaca una herramienta impulsada por IA diseñada para generar diagramas de arquitectura de software C4 a partir de descripciones de texto simples.
- Generación y modificación de diagramas de componentes C4 con el chatbot de IA de Visual Paradigm: Este tutorial demuestra el uso de un chatbot impulsado por IA para crear y refinar iterativamente la arquitectura a nivel de componentes para sistemas complejos.
- Generador de diagramas C4 impulsado por IA: Niveles principales y vistas de apoyo: Esta página explica cómo el generador de IA apoya los cuatro niveles principales del modelo C4: contexto, contenedor, componente y despliegue, para proporcionar documentación completa.
- Generador de diagramas de IA: Lanzamiento con soporte completo para el modelo C4: Esta actualización detalla la integración de funciones impulsadas por IA para la creación automatizada de diagramas jerárquicos del modelo C4.
- Generador de IA del modelo C4: Automatización del ciclo de vida completo de modelado: Este recurso destaca cómo un chatbot de IA especializado utiliza instrucciones conversacionales para garantizar la consistencia en la documentación de arquitectura para equipos DevOps.
- Revisión completa: Chatbots de IA genéricos frente a las herramientas C4 de Visual Paradigm: Esta comparación explica por qué herramientas especializadas como el C4 PlantUML Studio ofrecen resultados más estructurados y de mayor calidad profesional que los modelos de lenguaje de propósito general.






