들어가며
이른결정이란? 시스템의 업무 요구사항 즉, 유스케이스와 관련없는 프레임워크, 데이터베이스등을 결정하는것을 말함.
이른결정에 따른 결합을 없애기위해 소프트웨어 요소를 서로 분리해야함. 이는 선을 긋는다고 표현하며 이러한 선을 경계라고 말함.
다시말해 경계선을 긋는 행위는 결정을 늦추고 연기하는 데 도움을 줌. 궁극적으로는 결합으로 인해 발생되는 리스크로부터 시간을 절약해줌.
경계선을 잘 그은 사례 : FitNesse
개발초기에 업무규칙과 데이터베이스 사이에 경계선을 그어 플랫파일에 저장하는 시스템을 단 하루만에 모든 시스템이 Mysql에 저장하는 시스템으로 변경됨.
어떻게 선을 그을까? 그리고 언제 그을까?
- 선은 관련있는것과 없는것 사이에 긋는다.
- 데이터베이스는 업무규칙이 사용하는 간접적 도구다.
그림에서 경계선은 Interface, Database Access사이에 그어짐.
Database Access를 알고있는 클래스는 없음.
큰 개념에서 보게되면
Business Rules 컴포넌트안에 Database Interface를 Database 컴포넌트안에 Database Access가 의존하고있음.
Business Rules 컴포넌트에게 있어 Database 컴포넌트는 문제가되지않음, 그러나 Business Rules 컴포넌트의 호출을 쿼리언어로 변환하는 코드를 Database 컴포넌트가 담고있기때문에 Database 컴포넌트는 Business Rules 컴포넌트 없이 존재할 수 없음.
화살표 방향은 Business Rules 컴포넌트를 향하고있기 때문에 Database 컴포넌트는 다른 구현체로도 교체될 수 있음.
- 앞서 말했다시피 데이터베이스에 대한 결정 연기가능.
- 업무규칙 작성, 테스트에 집중 가능.
입력과 출력은?
위의 Business Rules 컴포넌트와 Databse 컴포넌트의 관계와 같이 Business 컴포넌트는 GUI 컴포넌트를 신경쓰지 않는다.
GUI는 다른 종류의 인터페이스로 교체가능.
플러그인 아키텍처
이전에 데이터베이스와 GUI 컴포넌트 추가와 관련해 서드파티 플러그인을 사용할 수 있게 해주는 패턴임.
플러그인에 대한 논의
앞서 한 얘기이므로 생략.
결론
시스템을 핵심 업무와 나머지는 플러그인인 컴포넌트 단위로 분리.
컴포넌트 사이의 화살표는 저수준 세부사항(플러그인)에서 고수준의 안정된 추상화(핵심업무) 방향을 가리키도록 배치해야함.
'📚 Book > Clean Architecture' 카테고리의 다른 글
19장 정책과 수준 (0) | 2020.02.22 |
---|---|
18장 경계해부학 (0) | 2020.02.22 |
16장 독립성 (0) | 2020.02.22 |
15장 아키텍처란? (0) | 2020.02.22 |
14장 컴포넌트 결합 (0) | 2020.02.22 |