[DDD] ANTICORRUPTION LAYER
정의
- 개념적인 객체와 행위를 하나의 모델과 프로토콜에서 다른 모델과 프로토콜로 변환하기 위한 메커니즘이다.
- Bounded Context를 있는 수단이다.
문제
- 다른 시스템과 상호작용하기 위한 거대한 인터페이스를 보유한 새로운 시스템을 구축할 경우 두 모델을 연계하는 데 따르는 어려움이 있다.
- 임시방편으로 새로운 모델을 다른 시스템의 모델과 유사하게끔 수정해서 새로운 모델의 의도가 전체적으로 매몰돼 버릴 수 있다.
- 통합을 거쳐 커다란 가치를 얻을지도 모르고 어떤 경우에는 통합이 절대적인 요구사항일 수 도 있다.
해결
- 클라이언트 고유의 도메인 모델 측면에서 기능을 제공할 수 있는 격리 계층을 만들어라.
- 해당 계층에서는 내부적으로 필요에 따라 두모델을 상대로 양방향으로 번역을 수행한다.
고려사항
- ANTICORRUPTION LAYER의 인터페이스 설계
- ANTICORRUPTION LAYER의 구현
- FACADE
- 하위 시스템에 대한 클라이언트의 접근을 단순화한다.
- 기능에 접근하는 것을 촉진하고 능률화 하며 그 밖의 것은 감춘다.
- 기저 시스템의 모델을 변경하지 않는다.
- ADAPTER
- 행위를 구현하는 측에서 이해한 것과 다른 프로토콜을 클라이언트에서 사용하게 해주는 래퍼
정리
- 이번 장에서는 BOUNDED CONTEXT를 잇는 방법인 ANTICORRUPTION LAYER 방법에 대해서 알아봤다. 실제 소프트웨어 개발하다 보면 context 간 통합이 이루어질 수밖에 없다 FACADE, ADAPTER를 통해 통합을 원활하게 이룰 수 있다고 생각한다. 실제 다양한 통합 방법 중 ANTICORRUPTION LAYER를 실무에 많이 사용하고 있는 것 같다.