Arquitectura Hexagonal
Principio
La arquitectura hexagonal es un patrón arquitectónico utilizado en el diseño de software. Su objetivo es crear acoplado de manera flexible componentes de aplicación que pueden ser fácilmente conectados 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.https://en.wikipedia.org/wiki/Hexagonal_architecture_(software)[fuente]).
En IPF, implementamos arquitectura hexagonal dentro de IPF services(microservicios/aplicaciones) donde el core la lógica de dominio está encapsulada y separada de la rest de la aplicación con clases de interfaz, lo que permite que el dominio sea portátil y que los adaptadores que implementan interfaces sean intercambiables.
El patrón de arquitectura hexagonal se sigue principalmente en el procesamiento de pagos. IPF services debido a la naturaleza del código de dominio que se generará en función de payment flows-definido utilizando Payments DSL on an MPS editor. Este código de dominio generado es embedded dentro de la aplicación y recibir y send connector 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 utilizando 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 ser probada y desarrollada de manera independiente sin requerir todos los componentes de la aplicación.
-
El dominio podría ser trasladado a diferentes aplicaciones sin tener que cambiar la implementación de la lógica de negocio, sino solo actualizando la entrada/output adapter s
Implicaciones
-
La lógica de dominio se define o desarrolla de manera independiente a los otros componentes de la aplicación.
-
Los adaptadores específicos del cliente pueden ser inyectados fácilmente en la aplicación sin necesidad de modificar la lógica del 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, es decir, diferentes adaptadores DAO como MongoDB o CosmosDB