Documentation for a newer release is available. View Latest

Arquitectura Hexagonal

Principio

La arquitectura hexagonal es un patrón arquitectónico usado en el diseño de software. Su objetivo es crear componentes de aplicación ligeramente acoplados que puedan conectarse fácilmente a su entorno de software por medio de puertos y adaptadores. Esto hace que los componentes sean intercambiables en cualquier nivel y facilita la automatización de pruebas (fuente).

hexagonal arch

En IPF, implementamos la arquitectura hexagonal dentro de los servicios de IPF (microservices/applications), donde la lógica de dominio central está encapsulada y separada del resto de la aplicación con clases de interfaz, lo que permite que el dominio sea portable y que los adaptadores que implementan interfaces sean intercambiables.

El patrón de arquitectura hexagonal se sigue principalmente en los servicios de IPF de tipo procesamiento de pagos debido a la naturaleza del código de dominio que se genera en función de los flujos de pago, definidos usando Payments DSL en un editor MPS. Este código de dominio generado se incrusta dentro de la aplicación y los conectores de recepción y envío se comunican con el dominio a través de puertos de entrada y salida.

Se espera seguir la arquitectura hexagonal para todas las aplicaciones desarrolladas usando IPF, ya que el patrón promueve la portabilidad y la extensibilidad.

Justificación

Los patrones promueven la extensibilidad y la portabilidad:

  • La lógica de dominio puede probarse y desarrollarse de manera independiente sin requerir todos los componentes de la aplicación

  • El dominio podría portarse a diferentes aplicaciones sin tener que cambiar la implementación de la lógica de negocio, sólo actualizando los adaptadores de entrada/salida

Implicaciones

  • La lógica de dominio se define o desarrolla de forma independiente del resto de componentes de la aplicación

  • Los adaptadores específicos del cliente pueden inyectarse fácilmente en la aplicación sin tener que cambiar la lógica de dominio u otras partes de la aplicación.

  • Se pueden introducir diferentes adaptadores de industria o tecnología sin tener que reescribir toda la lógica; por ejemplo, diferentes adaptadores DAO como MongoDB o CosmosDB