Qué es Domain-Driven Design
Diseño basado en dominio de negocio
Qué es DDD
Domain-Driven Design (DDD) es un enfoque de desarrollo de software que se centra en modelar el dominio de negocio y la colaboración estrecha entre desarrolladores y expertos del dominio.
Diseño Estratégico
| Concepto | Descripción | |----------|-------------| | Bounded Context | Límites del modelo con lenguaje ubicuo | | Ubiquitous Language | Lenguaje compartido del equipo y negocio | | Context Map | Mapa de relaciones entre contextos | | Subdomain | Subdominio (Core/Supporting/Generic) |
Diseño Táctico
| Patrón | Propósito | |--------|-----------| | Entity | Objeto con identidad | | Value Object | Objeto de valor inmutable | | Aggregate | Grupo de entidades relacionadas | | Aggregate Root | Punto de entrada al agregado | | Repository | Acceso a agregados | | Domain Service | Lógica de negocio fuera de entidades | | Domain Event | Evento en el dominio | | Factory | Creación de objetos complejos |
Tipos de Subdominios
- Core Domain — ventaja competitiva
- Supporting Subdomain — apoya al core
- Generic Subdomain — soluciones estándar
Patrones de Integración
| Patrón | Descripción | |--------|-------------| | Shared Kernel | Núcleo compartido entre contextos | | Customer-Supplier | Relación cliente-proveedor | | Conformist | Conformidad con modelo upstream | | Anticorruption Layer | Protección de modelos externos | | Open Host Service | API pública del contexto |
Cuándo aplicar DDD
- Lógica de negocio compleja
- Proyecto de larga duración
- Acceso a expertos del dominio
- Equipo dispuesto a invertir en diseño