Warstwa antykorupcyjna (ACL) jest używana w celu zapobiegania "przenikaniu" niepożądanej logiki, modeli lub danych pomiędzy integrowanymi systemami. Ten wzorzec implementuje pośrednią warstwę translatorów, adapterów i fasad, aby odizolować jeden model domenowy od drugiego.
Na przykład, podczas integracji starego systemu księgowego z nową platformą e-commerce, ACL pozwoli konwertować formaty danych, walidować je i poprawnie obsługiwać zasady biznesowe obu stron.
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 )
Czy można używać serializacji lub ORM zamiast warstwy antykorupcyjnej?
Serializacja i ORM ułatwiają przesyłanie i przechowywanie danych, ale nie chronią modelu domenowego przed zewnętrznymi wpływami. Tylko ACL zapewnia izolację logiki i zgodność z zasadami biznesowymi obu systemów.
Kiedy ACL nie jest potrzebny?
ACL zazwyczaj nie jest potrzebny, jeśli oba systemy mają identyczne lub zgodne modele i są kontrolowane przez jeden zespół. Jednak w praktyce nawet najmniejsze różnice mogą prowadzić do problemów bez ACL.
Co się stanie, jeśli integracja będzie realizowana bezpośrednio bez ACL?
Wysokie ryzyko, że zmiany w zewnętrznym systemie negatywnie wpłyną na logikę biznesową głównego systemu lub spowodują błędy.