[책] 클린아키텍처: 부분적 경계

문돌이 개발자·2025년 1월 25일

험블 객체 패턴

테스트하기 어려운 행위와 테스트하기 쉬운 행위를 단위 테스트 작성자가 분리하기 쉽게 하는 방법으로 고안된 디자인 패턴

  • 행위들을 두 개의 모듈 또는 클래스로 나눈다. 이들 모듈 중 하나가 험블이다.
  • 가장 기본적인 본질은 남기고, 테스트하기 어려운 행위를 모두 험블 객체로 옮긴다.
  • 나머지 모듈에는 험블 객체에 속하지 않은, 테스트하기 쉬운 행위를 모두 옮긴다.

험블 객체 패턴을 사용하면 두 부류의 행위를 분리하여 프레젠터와 뷰라는 서로 다른 클래스로 만들 수 있다.

프레젠터와 뷰

뷰는 험블 객체이고 테스트하기 어렵다.
프레젠터는 테스트하기 쉬운 객체다.

부분적 경계

아키텍처 경계를 완벽하게 만드는 데는 비용이 많이 든다. 쌍방향의 다형적 Boundary interface, Input과 Output을 위한 데이터 구조를 만들어야 할 뿐 아니라 두 영역을 독립적으로 컴파일하고 배포할 수 있는 컴포넌트로 격리하는 데 필요한 모든 의존성을 관리해야 한다.
애자일 커뮤니티에 속한 사람 중 많은 이가 이러한 선행적인 설계를 탐탁치 않게 여긴다. YAGNI(You Arent Going to Need It) 원칙을 위반하기 때문이다. 이 경우 부분적 경계를 구현해볼 수 있다.

부분적 경계 만들기

  • 컴포넌트 배포 직전까지만 수행하기
  • 전통적인 Strategy 패턴을 사용하기
  • Facade 패턴 사용하기

YAGNI는 내가 자주 위반하는 원칙이기도 하다. 설계라는 게 사실 구현 전에 미리 구조를 잡는 거라서 이런 부분이 분명 있을 것 같았는데 이야기가 나와서 좋았다.

profile
까먹고 다시 보려고 남기는 기록

0개의 댓글