[L4] Challenges_of_Domain-Driven_Microservice_Design_A_Model-Driven_Perspective_1418c6bcb2a12103da02e56f0ad6fe2c

Página 1: Introducción al Diseño de Microservicios Dirigido por el Dominio

Este artículo explora los desafíos del diseño de microservicios dirigidos por el dominio (DDD) y presenta enfoques para abordarlos mediante el desarrollo impulsado por modelos. También proporciona una visión general de herramientas de apoyo para enfrentar estos desafíos.

Diseño Dirigido por el Dominio (DDD)

  • Definición: Metodología popular para capturar el conocimiento del dominio relevante para el diseño de software.

  • Importancia: Fomenta la comprensión del dominio y la corrección de un diseño emergente a través de la modelación ágil y colaborativa entre expertos del dominio y ingenieros de software.

Arquitectura de Microservicios (MSA)

  • Características: Emerge como un estilo arquitectónico para sistemas de software distribuidos, con altos requerimientos de escalabilidad y adaptabilidad.

  • Aplicación de DDD: DDD es relevante para decomponer dominios en contextos coherentes que corresponden a microservicios funcionales con capacidades empresariales distintas.

Desafíos al Aplicar DDD a MSA

  1. Deducción de Servicios: Dificultades en deducir microservicios a partir de modelos de dominio.

  2. Modelado de Componentes de Infraestructura: Necesidad de modelar componentes de infraestructura a partir de modelos de dominio.

  3. Modelación en Equipos Autónomos: Retos en la modelación del dominio en equipos distribuidos que funcionan de manera autónoma.

Ejemplo: Modelo de Dominio de Carga

  • Un ejemplo de modelo de dominio relacionado con la carga se representa mediante un diagrama de clase UML.

  • Conceptos Claves:

    • Carga: Centrado en el concepto de Carga que contiene varios Clientes (diferenciados por roles como "remitente" o "receptor").

    • Historial de Entregas: Registra eventos de manejo de las cargas, involucrando movimientos de transportistas entre ubicaciones.

Página 2: Desafíos en el Diseño de Microservicios Dirigido por el Dominio

Este segmento aborda tres desafíos principales que impactan la deducción de microservicios:

Deducción de Microservicios a partir de Modelos de Dominio

  • Omisiones en Modelos: A menudo, faltan especificaciones sobre interfaces, operaciones y parámetros necesarios para la implementación de servicios.

  • Ejemplo: En el modelo se incluye el contexto Cliente pero carece de las interfaces de servicio y sus operaciones específicas, dificultando la implementación correspondiente.

Componentes de Infraestructura Faltantes en Modelos de Dominio

  • Ausencia Intencionada: Los modelos de dominio a menudo no incluyen componentes de infraestructura como descubrimiento de servicios o puertas de enlace API, que son necesarios para la implementación técnica.

Modelado Autónomo del Dominio

  • La propiedad de los microservicios generalmente se asigna a un solo equipo responsable que maneja la implementación, operación y diseño, lo cual conlleva desafíos en la gestión de acceso y cambios en el modelo.

Página 3: Aplicación de DDD en MSA

Modelos Intermedios

  • Definición: Los modelos intermedios muestran características técnicas de los microservicios desde distintos puntos de vista.

Ejemplo de Modelos Intermedios

  1. Modelo de Interfaces: Se deduce del modelo de dominio un modelo de interfaz que especifica las interfaces de microservicio.

  2. Modelo de Despliegue: Los artefactos de microservicio se modelan con información técnica relacionada con sus ubicaciones, protocolos y formatos de mensajes.

Estructuras de Modelado

  • Las características técnicas relevantes que no figuran en el modelo de dominio se transponen a modelos intermedios que ayudan a la implementación de MSA.

Página 4: Patrones de Diseño Dirigido por el Dominio

Table 1 describe varios patrones DDD en notación UML, incluyendo:

  • Entidad: Modela conceptos del dominio que se distinguen mediante una identidad específica.

  • Objeto de Valor: Modela conceptos inmutables que actúan como contenedores de valor.

  • Agregado: Agrupa entidades y objetos de valor relacionados, accesibles únicamente a través de su raíz.

Contextos Delimitados

  • Se definen los límites de los conceptos del dominio, asegurando aislamiento de conceptos coherentes asociándolo con un microservicio funcional.

Página 5: Gestión del Modelo del Dominio

Políticas de Modelado Autónomo

  • Se recomienda regular el acceso al modelo del dominio y los cambios permitidos para fomentar la baja acoplamiento y facilitar la colaboración entre microservicios.

Acceso al Modelo

  • Las políticas de acceso pueden oscilar entre el acceso completo a todo el modelo y el acceso restringido solo a partes coherentes, dependiendo de la necesidad del equipo.

Página 6: Herramientas para el Diseño Práctico de Microservicios Dirigidos por el Dominio

Herramientas de Soporte

  • Perfil UML para DDD: Permite transformar diagramas de clases UML en modelos de dominio aplicando estereotipos que reducen la informalidad del modelo.

  • AjiL: Herramienta basada en Eclipse que permite modelar y generar código para microservicios, produciendo implementaciones basadas en Spring Boot y Spring Cloud.

Enfoque Futuro

  • Las herramientas actuales se integran para facilitar la deducción automática de modelos intermedios a partir de modelos de dominio.

Página 7: Conclusiones y Referencias

Conclusiones

  • Se discuten los desafíos de deducir microservicios y componentes de infraestructura desde modelos de dominio, además de la modelación en equipos distribuidos.

Referencias

  1. Evans, E. "Domain-Driven Design".

  2. Newman, S. "Building Microservices".

  3. Otros estudios relevantes en el campo.