Modelo de Arquitectura C4
Para alcanzar un nivel alto de entendimiento e interacción entre los integrantes de cualquier equipo es necesario establecer un lenguaje simple y común a través del cual los involucrados comprendan los elementos diseñados aportando observaciones, mejoras y soluciones.
El Modelo de Arquitectura C4 creado por Simon Brown permite establecer el lenguaje común mediante la diagramación de sus integrantes:
- Contexto
- Contenedor
- Componente
- Código
Adicionalmente es posible generar otros diagramas conocidos como Suplementarios** entre los que se puede destacar:
- Sistema
- Dinámico
- Despliegue
Contexto (Nivel 1)
Este diagrama permite representar gráficamente el sistema a construir y su interacción con las personas y otros sistemas con los que se comunica. Para esto es necesario establecer una serie de abstracciones gráficas que se usarán para la representación de personas, aplicaciones y su interacción, siendo ideal para comunicarlo a usuarios no técnicos.
Contenedor (Nivel 2)
En este nivel se presenta un mayor detalle respecto al modelo anterior para los elementos requeridos, en este caso Internet Banking System es mostrado considerando que el término Contenedor incluye a: aplicaciones (servidor, cliente, móbiles, API ), almacenamiento de datos, microservicios, etc., los cuales forman parte del sistema a desarrollar.
Los equipos que usan este diagrama pueden ser de tipo técnico, soporte u operaciones ya que incluye definiciones sobre la tecnología a utilizar describiendo sus interacciones y forma de comunicación.
Componente (Nivel 3)
Un detalle aún más específico puede ser observado en el Diagrama de Componentes donde cada Contenedor es mostrado descomponiendo sus bloques principales y interacciones. Un Contenedor puede encontrarse formado por varios Componentes de los cuales se presentará sus responsabilidades y los detalles de la tecnología usada.
Este tipo de diagramas deberá ser revisado por audiencia de tipo técnica con un nivel de especialización en la tecnología a usar.
Código (Nivel 4)
Finalmente en caso de ser necesario cada componente puede ser mostrado en forma de diagrama de Clases, Entidad Relación o similar mediante el uso de la notación más adecuada para el tipo de diagrama usado como es el caso de UML, Cajas, Notación BPMN, etc.
El tipo de audiencia es técnica y corresponde con el área encargada del desarrollo de cada componente.
Diagramas Suplementarios
Estos diagramas se encargan de mostrar otros aspectos del sistema a desarrollar y su entorno llegando a conocer el ecosistema en el que la aplicación se desenvolverá.
Diagrama del Sistema (System Landscape)
Este diagrama se encuentra sobre los diagramas C4 y de forma muy similar a un diagrama de Contexto permiten observar la interacción de los diversos sistemas y aplicaciones existentes en la organización sin enfocarse en ningún sistema en particular.
Al considerarse un diagrama de alto nivel su audiencia puede ser técnica y no técnica.
Diagrama Dinámico (Dynamic)
En este diagrama se presenta las interacciones realizadas entre los elementos requeridos de una forma secuencial y ordenada. Se puede considerar similar a los diagramas UML de Comunicación (Colaboración) y Secuencia.
La audiencia para este tipo de diagrama puede ser de tipo técnica y no técnica dentro y fuera del equipo de desarrollo.
Diagrama de Despliegue (Deployment)
Aquí se puede determinar la correspondencia entre los modelos realizados y la infraestructura existente, más específicamente entre contenedores y nodos de despliegue (elemento físico, virtualizado de la infraestructura como un servidor, dispositivo o contenedor) o un ambiente de ejecución (como un servidor de base de datos, web o aplicación). Así también los nodos de infraestructura (como servicios DNS, balanceadores de carga, firewalls, etc.) también son considerados.
La audiencia de este tipo de diagramas es de tipo técnica incluyendo arquitectos de software, desarrolladores, infraestructura y operaciones/soporte.
Herramientas
Los diagramas del modelo C4 se pueden graficar mediante las siguientes herramientas y extensiones: Structurizr, PlantUML, Archi, Sparx Enterprise Architect, draw.io, Visio Stencil
Conclusiones
El modelo C4 de Simon Brown permite representar sistemas a desarrollar de una forma simple y efectiva, permitiendo que cada tipo de audiencia pueda entender de una forma clara y concisa los elementos que formarán parte de la solución, este conocimiento es fundamental para lograr la ejecución de un proyecto de forma exitosa en los tiempos requeridos, por este motivo es muy importante considerarlo para nuevas aplicaciones a desarrollar.