[Clean Architecture 정리] 24장. 부분적 경계
24장. 부분적 경계
아키텍처 경계를 완벽하게 만드는 것에는 많은 비용이 든다.
쌍방향의 다형적 인터페이스, 컴포넌트 간 입출력을 위한 데이터 구조, 독립적인 컴포넌트의 배포와 의존성 관리는 비용이 많이 드는 작업이다.
컴포넌트를 분리함에 있어 YAGNI(You Aren't Going to Need it) 원칙에 위배되는 선행적인 설계는 부분적인 경계(partial boundary)를 적용할 수 있다.
단일 컴포넌트
부분적 경계를 만드는 첫번째 방법은 독립적인 컴포넌트를 위한 작업(쌍방향의 다형적 인터페이스, 컴포넌트 간 입출력을 위한 데이터 구조 등)을 수행하지만 단일 컴포넌트에 배포하는 것이다.
이 방법을 적용하면 다수의 컴포넌트를 관리할 비용은 줄어들지만, 완벽한 경계를 위한 사전 작업에 드는 비용은 적지 않다.
일차원 경계
부분적 경계를 만드는 두번째 방법은 전략 패턴(strategy pattern) 등을 적용해 쌍방향 경계가 아닌 일차원 경계를 두는 것이다.
클라이언트와 구현 클래스 간 경계를 만들어 미래에 컴포넌트를 분리할 수 있는 기반을 만들었지만, 쉽게 무너질 수 있는 경계이다.
https://dheldh77.tistory.com/entry/%EC%A0%84%EB%9E%B5Strategy-%ED%8C%A8%ED%84%B4
퍼사드
일차원 경계를 만드는 것보다 더 간단한 방법은 퍼사드 패턴(Facade pattern)을 이용한 방법이 있다.
퍼사드 패턴은 의존성 역전도 적용되지 않으며 퍼사드 클래스만으로 간단히 정의된다.
퍼사드 클래스에 선언된 메서드는 다른 각기 다른 구현 클래스에서 정의하며, 퍼사드 클래스는 메서드 호출을 구현 클래스에 전달하는 역할을 수행한다.
클라이언트 코드가 구현 클래스에 직접 접근하진 않지만, 추이 종속성을 가지게 된다.
https://dheldh77.tistory.com/entry/%ED%8C%8C%EC%82%AC%EB%93%9C-%ED%8C%A8%ED%84%B4Facade-Pattern
부분적 경계를 만드는 방법은 여러가지가 있지만, 선행적인 설계를 수행하기위한 비용이 부담스럽다면, 상황에 따라 장단점을 명확히 알고 적절한 방법을 채택해야 한다.
서적 : http://www.yes24.com/Product/Goods/77283734