Menu

Issue 10007

Anti-Corruption Layer: proteggere il dominio dalle semantiche esterne

Quando la traduzione non serve a uniformare tutto, ma a difendere il modello interno da concetti importati male.

· 5 min

Obiettivo

Comprendere come un Anti-Corruption Layer protegge il modello di dominio interno da sistemi esterni con concetti, vincoli e semantiche dei dati differenti.

Come usarlo davvero

Un Anti-Corruption Layer non è solo una mappa tra campi. È un confine architetturale che traduce il linguaggio di un sistema esterno in concetti validi per il tuo dominioGlossarioDominioLa parte del mondo reale, del business o dell’organizzazione che un sistema deve supportare.Apri la voce completa interno. In pratica, lo metti tra integrazione e modello di dominio quando il sistema esterno usa semantiche che rischiano di contaminare le regole interne: stati troppo generici, codici opachi, tassonomie pensate per altri processi, o attributi che hanno senso solo per il fornitore. Il punto chiave è questo: il dominio non deve dipendere dalle forme del sistema esterno. L'ACL riceve i dati esterni, li normalizza, applica eventuali regole di adattamento e consegna al dominio oggetti e concetti coerenti con il linguaggio locale. Se il mapping diventa troppo ricco di eccezioni, è un segnale utile: forse stai cercando di far passare nel dominio un modello che non gli appartiene. • Traduci verso il linguaggio del dominio, non verso un DTO generico condiviso. • Isola qui le dipendenze tecniche e contrattuali dell'integrazione. • Tieni il modello interno libero da codici, flag e stati nati per l'esterno.

Trade-off da chiarire in architettura

Il vantaggio principale è la protezione del modello di dominio: più chiarezza, meno ambiguità, regole più stabili. Inoltre riduci il rischio che cambiamenti del sistema esterno si propaghino direttamente nelle API interne o nei servizi di business. Il costo però è reale: introduci più codice, più testGlossarioTestUna verifica deliberata che produce evidenze su una specifica aspettativa o rischio.Apri la voce completa di traduzione e un punto in più da mantenere. C'è anche un rischio organizzativo: se l'ACL viene trattato come semplice layer tecnico, nessuno presidia le semantiche, e la traduzione degrada in un mapping fragile. Un altro trade-offGlossarioTrade-offUno scambio in cui migliorare un risultato ne indebolisce o ne rende più costoso un altro.Apri la voce completa importante è che l'ACL non sostituisce una buona analisi del confine di dominio. Se il dominio interno e il sistema esterno sono troppo allineati, forse non serve un ACL pieno; se invece i significati sono diversi, evitarlo per semplicità spesso sposta il costo dentro il dominio. • Più isolamento del dominio, ma più capacità di traduzione da progettare e mantenere. • Meno couplingGlossarioCouplingIl grado in cui un componente dipende dalla conoscenza, dal timing o dai cambiamenti di un altro componente.Apri la voce completa con l'esterno, ma maggiore disciplina sui contratti di integrazione. • Più chiarezza semantica interna, ma anche più lavoro per gestire evoluzione e casi limite.

Esempio realistico in azienda

Immagina una piattaforma e-commerce che integra un ERP centrale per disponibilità e ordini. L'ERP espone uno stato unico chiamato statusCode, con valori pensati per logistica, amministrazione e fatturazione. Nel dominio dell'e-commerce, però, il prodotto ha bisogno di concetti più precisi: OrderAccepted, AwaitingStock, ReadyToShip, CancelledByCustomer. Senza ACL, i team cominciano a usare statusCode ovunque, e le regole di business diventano dipendenti dal dizionario dell'ERP. Quando l'ERP aggiunge un nuovo stato o cambia il significato di uno esistente, anche il dominio ne risente. Con un Anti-Corruption Layer, invece, il mapping verso gli stati locali è esplicito: alcune combinazioni esterne vengono fuse, altre richiedono regole aggiuntive, altre ancora vengono rifiutate perché non rappresentabili. Il risultato non è solo tecnico: il team di prodotto continua a discutere il proprio processo ordini, non la tassonomia del legacy. • L'ERP resta un sistema importante, ma non detta il vocabolario del dominio e-commerce. • Le anomalie del legacy vengono gestite nel layer di traduzione, non disperse nelle regole di business. • Le discussioni di analisi restano sui processi del prodotto, non sui campi ereditati dal fornitore.

Per approfondire

Fonti esterne autorevoli per approfondire il pattern e il rapporto tra confini di dominio e traduzione semantica. • Anti-Corruption Layer - Martin Fowler - https://martinfowler.com/bliki/AntiCorruptionLayer.html • Domain-Driven Design Reference - Eric Evans - https://domainlanguage.com/ddd/reference/ • Patterns of Enterprise Application Architecture - Martin Fowler - https://martinfowler.com/books/eaa.html

Tag