[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
Deducción de Servicios: Dificultades en deducir microservicios a partir de modelos de dominio.
Modelado de Componentes de Infraestructura: Necesidad de modelar componentes de infraestructura a partir de modelos de dominio.
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
Modelo de Interfaces: Se deduce del modelo de dominio un modelo de interfaz que especifica las interfaces de microservicio.
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
Evans, E. "Domain-Driven Design".
Newman, S. "Building Microservices".
Otros estudios relevantes en el campo.