Capsule Informatiche di Lello De Luca
← Tutte le Capsule

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.