Context Map: rendere esplicite le relazioni tra i bounded context
La Context Map di DDD documenta relazioni, dipendenze e traduzioni tra bounded context, diventando una guida concreta per integrazioni e migrazione del legacy.
Perché serve
Dopo aver individuato Patient Identity, ADT, Bed Management, Order Management e Clinical Record, resta una domanda fondamentale: come si relazionano? Se questa risposta rimane implicita, il sistema ricrea dipendenze nascoste attraverso API, database o messaggi.
Cosa documentare
Upstream e downstream: chi possiede il concetto e chi lo consuma.
Tipo di relazione: API sincrona, evento, Read Model, ACL, Open Host Service.
Contratto: identificativi, versioni, SLA, semantica e compatibilità.
Authority: quale sistema è source of truth in ogni fase della migrazione.
Politica di errore: cosa accade se l'upstream è indisponibile.
Esempio
Patient Identity è upstream dell'identità canonica; ADT conserva patientId ma non ridefinisce il paziente. ADT è upstream dell'episodio e pubblica PatientTransferred; Bed Management consuma l'evento e mantiene la propria Occupancy. Order Entry può interrogare ADT per verificare l'episodio ma non accede alle sue tabelle.
Relazioni utili durante la modernizzazione
Anti-Corruption Layer verso legacy con modello incompatibile.
Published Language per eventi/API con semantica condivisa e versionata.
Open Host Service per un servizio che espone un contratto stabile a più consumer.
Conformist solo quando accettare il modello upstream è una scelta consapevole e poco rischiosa.
Context Map come strumento di retirement
Aggiungendo alla mappa lo stato LEGACY/SHADOW/DUAL-RUN/AUTHORITATIVE/RETIRED, si vede quali dipendenze impediscono lo spegnimento di un componente. Il retirement diventa una proprietà verificabile della mappa, non una decisione improvvisata a fine progetto.
Una mappa viva
La Context Map deve essere versionata e aggiornata insieme ai contratti. Diagrammi belli ma non collegati a owner, repository, API ed eventi diventano rapidamente obsoleti. È utile mantenerla vicina all'Architecture Decision Record e ai cataloghi di integrazione.
