Posso darti un altro esempio. Considera di avere un sistema di e-commerce. Avresti prodotti lì, tuttavia i prodotti faranno parte di almeno due domini diversi:
- Catalogo prodotti, in cui conservi la descrizione del prodotto e tutti gli attributi
- Inventario, in cui si dispone di un livello di scorte di prodotto
Se hai un contesto limitato per entrambi i domini, la tua soluzione può rapidamente trasformarsi in una grande palla di fango perché inizierai a fare riferimenti incrociati. Alla fine non avrai più due domini. L'inventario dei prodotti sarà rovinato con i riferimenti del catalogo prodotti e viceversa. Di conseguenza, non sarai in grado di cambiare un dominio senza toccarne un altro, anche se ti rendi completamente conto che non è necessario. I tuoi modelli diventano dipendenti l'uno dall'altro, strettamente accoppiati e dipendenti in modo negativo - dipendono dall'implementazione.
Se, tuttavia, hai due contesti limitati, tutte le modifiche apportate in un dominio non influiranno sull'altro non appena manterrai chiari i tuoi canali di comunicazione. Significa che devi avere la duplicazione dei dati, ma questo è il costo minimo da pagare per un'applicazione basata su componenti accoppiati in modo errato. I tuoi domini possono dialogare tra loro utilizzando eventi di dominio. Anche se non prevedi di avere un'applicazione basata su SOA all'inizio, sarai in grado di scalare fino a quel livello quando ne avrai bisogno con uno sforzo relativamente basso poiché cambi semplicemente il trasporto per i tuoi eventi di dominio, lasciando intatta l'idea dietro di essa.
Aggiornamento: c'è un buon servizio di abilità su SkillsMatter, di Eric Evans. Fa un'analogia con la vecchia storia, quando diversi ciechi descrivono un elefante dalla loro prospettiva. Poiché ogni uomo può toccare solo una parte dell'elefante, lo descrivono come "albero", "muro", "serpente", "corda". E ciascuno di quegli uomini ha ragione nel loro contesto. Il contesto limitato è il luogo in cui vive un linguaggio onnipresente. Al di fuori del contesto, questi termini potrebbero avere un significato completamente diverso ma all'interno del contesto, la lingua è la stessa in più domini. Greg Young suggerisce vivamente di iniziare a leggere il libro blu dal capitolo 11, poiché qui vengono spiegati i concetti più importanti e fondamentali. L'attenzione ai modelli tattici all'inizio del libro rende molto comune questo approccio alla "luce DDD",