mauro.ec

Ideas, thoughts, and proofs of concept

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.

Contexto

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.

Contenedor

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.

Componente

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.

Componente

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.

Componente

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.

Componente

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.

Componente

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.