Te puedo dar otro ejemplo. Considere que tiene algún sistema de comercio electrónico. Tendría productos allí, sin embargo, los productos serán parte de al menos dos dominios diferentes:
- Catálogo de productos, donde guarda la descripción del producto y todos los atributos
- Inventario, donde tiene nivel de stock de producto
Si tiene un contexto limitado para ambos dominios, su solución puede convertirse rápidamente en una gran bola de lodo porque comenzará a hacer referencias cruzadas. Al final ya no tendrás dos dominios. El inventario de su producto se estropeará con referencias del catálogo de productos y viceversa. Como resultado de esto, no podrá cambiar un dominio sin tocar otro, incluso si se da cuenta de que no es necesario. Sus modelos se vuelven dependientes entre sí y están estrechamente acoplados, y dependen de una mala manera, dependiendo de la implementación.
Sin embargo, si tiene dos contextos limitados, todos los cambios que realice en un dominio no afectarán al otro tan pronto como mantenga claros sus canales de comunicación. Significará que necesita tener duplicación de datos, pero este es el costo más bajo para pagar por una aplicación basada en componentes acoplados de forma incorrecta. Sus dominios pueden comunicarse entre sí mediante eventos de dominio. Incluso si no planea tener una aplicación basada en SOA al principio, podrá escalar a ese nivel cuando lo necesite con un esfuerzo relativamente bajo, ya que solo cambia el transporte para los eventos de su dominio, dejando la idea intacta.
Actualización: Hay una buena transmisión de habilidades en SkillsMatter, de Eric Evans. Da una analogía de la vieja historia, cuando varios ciegos describen a un elefante desde su perspectiva. Como cada hombre solo puede tocar una parte del elefante, lo describen como un "árbol", "pared", "serpiente", "cuerda". Y cada uno de esos hombres tiene razón dentro de su contexto. El contexto limitado es donde vive el lenguaje ubicuo. Fuera del contexto, estos términos pueden tener un significado completamente diferente, pero dentro del contexto, el lenguaje es el mismo en múltiples dominios. Greg Young sugiere comenzar a leer el libro azul del capítulo 11, ya que los conceptos fundamentales más importantes se explican allí. El enfoque en los patrones tácticos al comienzo del libro hace que este enfoque de "DDD-light" sea muy común,