03 - Diagramas C4

El modelo C4 describe la arquitectura de un sistema en cuatro niveles: Contexto, Contenedores, Componentes y Código. Cada nivel responde a una pregunta distinta y tiene distinta audiencia.

Nivel Pregunta Audiencia
Contexto ¿Cómo se relaciona el sistema con personas y sistemas externos? Cualquier interesado
Contenedores ¿Qué aplicaciones y almacenes forman el sistema? Técnicos y arquitectos
Componentes ¿Qué módulos componen cada contenedor? Desarrolladores
Código ¿Cómo se organizan las clases? Desarrolladores del componente

Los tres primeros son los más usados; el nivel de código es esencialmente el diagrama de clases del tema anterior.

  • Persona: usuario del sistema.
  • Sistema de software: el conjunto completo; en el nivel de contexto es la caja mayor.
  • Contenedor: unidad ejecutable o almacén de datos: aplicación web, API, base de datos, cola de mensajes.
  • Componente: módulo con responsabilidad dentro de un contenedor.
  • Relación: conecta elementos, normalmente con su tecnología y protocolo (HTTP, JDBC…).

«person»Estudiante Consulta el catálogo«system»Sistema de biblioteca Gestiona libros y préstamosUsa[HTTPS]

El nivel de contexto no entra en detalles internos: solo muestra el sistema, sus usuarios y los sistemas externos con los que habla.

Sistema de biblioteca[system]«container»Aplicación web[TypeScript] Interfaz del usuario«container»API REST[Java, Spring Boot] Expone la lógica«container»Base de datos[MariaDB] Guarda libros y préstamos«person»Estudiante Consulta el catálogoUsa[HTTPS]Llama a[HTTPS/JSON]Lee y escribe[JDBC]

Aquí aparecen las tecnologías y los protocolos. Para el monolito por capas que se construye en 1.º, el diagrama de contenedores muestra aplicación, API y base de datos.

«component»Controller[Recibe peticiones HTTP]«component»Service[Reglas de negocio]«component»Repository[Acceso a datos]invocausa

El nivel de componentes muestra la organización interna de un contenedor, por ejemplo las capas del monolito.

Situación Diagrama
Explicar el sistema a alguien nuevo Contexto
Decidir tecnologías o despliegue Contenedores
Planificar el código de un módulo Componentes
Diseñar o revisar clases Código (diagrama de clases)
No hay que dibujar los cuatro niveles siempre: se elige el nivel que responde a la pregunta que se quiere contestar. Mantener los diagramas actualizados importa más que el detalle.
  • clase/daw/ed/c4.txt
  • Última modificación: 2026/10/31 19:27
  • por cesguiro