La couche anti-corruption (ACL) est utilisée pour empêcher le "fuite" de logique, de modèles ou de données indésirables entre les systèmes intégrés. Ce modèle met en œuvre une couche intermédiaire de traducteurs, d'adaptateurs et de façades, afin d'isoler un modèle domanial d'un autre.
Par exemple, lors de l'intégration d'un ancien système de comptabilité avec une nouvelle plateforme de commerce électronique, l'ACL permettra de convertir les formats de données, de les valider et de traiter correctement les règles commerciales des deux parties.
class LegacyUserDTO: def __init__(self, legacy_id, fname, lname): self.legacy_id = legacy_id self.fname = fname self.lname = lname class ModernUser: def __init__(self, id, first_name, last_name): self.id = id self.first_name = first_name self.last_name = last_name def acl_translate(legacy_user): return ModernUser( id=legacy_user.legacy_id, first_name=legacy_user.fname, last_name=legacy_user.lname )
Peut-on utiliser la sérialisation ou l'ORM à la place de la couche anti-corruption ?
La sérialisation et l'ORM facilitent le transfert et le stockage des données, mais ne protègent pas le modèle domanial des influences externes. Seule l'ACL garantit l'isolement de la logique et la conformité des règles commerciales des deux systèmes.
Dans quels cas l'ACL n'est-il pas nécessaire ?
L'ACL n'est généralement pas nécessaire si les deux systèmes ont des modèles identiques ou compatibles et sont contrôlés par la même équipe. Mais en pratique, même les plus petites différences peuvent causer des problèmes sans ACL.
Que se passera-t-il si l'intégration est effectuée directement sans ACL ?
Un risque élevé que les modifications dans le système tiers affectent négativement la logique commerciale du système principal ou entraînent des bugs.