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.
1. Los cuatro niveles
| 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.
2. Elementos
- 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…).
3. Contexto
El nivel de contexto no entra en detalles internos: solo muestra el sistema, sus usuarios y los sistemas externos con los que habla.
4. Contenedores
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.
5. Componentes
El nivel de componentes muestra la organización interna de un contenedor, por ejemplo las capas del monolito.
6. Cuándo usar cada nivel
| 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) |