Architecture

[Clean Architecture 정리] 19장. 정책과 수준

테리는당근을좋아해 2022. 8. 25. 01:19

19장. 정책과 수준

소프트웨어 시스템은 정책을 기술이며, 프로그램은 입력이 출력으로 어떻게 변환되는지 그 과정을 정책으로 기술한 것이다.

 

소프트웨어 아키텍처는 이 정책을 분리하는 역할을 맡는다.

동일한 시점과 이유로 변경되는 정책은 같은 수준, 같은 컴포넌트에 위치해야 한다.

반대로 다른 시점, 이유로 변경되는 정책은 다른 수준, 다른 컴포넌트로 분리되어야 한다.

 

각 컴포넌트는 서로를 의존하며 소스 코드, 컴파일 타임의 의존성으로 연결된다.

좋은 아키텍처는 이러한 의존성을 컴포넌트 수준에서, 저수준 컴포넌트가 고수준 컴포넌트를 의존하도록 한다.

 

 

수준 (level)

수준은 '입력과 출력까지의 거리'를 의미한다.

입력과 출력까지의 거리와 가까울수록 저수준이며, 멀수록 고수준 정책에 해당된다.

 

데이터를 읽어들여 정책에 따라 변환해 출력하는 시스템을 개발한다고 하면 위의 클래스 다이어그램처럼 아키텍처를 설계할 수 있다.

 

I/O 관련 인터페이스와 Rules 클래스를 하나의 경계로 묶어 경계 밖의 I/O 클래스가 의존하도록 한다.

경계 안의 클래스는 고수준의 요소가 되며 경계 밖의 입출력과 가까운 클래스는 저수준 요소가 된다.

 

저수준 정책의 변경(예, FileRead/Write -> SocketRead/Write)은 고수준 정책 관련 클래스에 어떤 영향도 끼치지 않는다.

그저 인터페이스에 명세된 시그니처에 따라 구현하면 그만이다. 또, 다른 입/출력 클래스를 플러그인할 수도 있다.

 

정책을 컴포넌트로 묶는 기준은 정책이 변경되는 이유와 시점에 따른다.

고수준 정책은 덜 빈번하게, 더 중요한 이유로 변경되며 저수준 정책은 더 빈번하게, 긴급성으로, 덜 중요한 이유로 변경된다.

 

 

서적 : http://www.yes24.com/Product/Goods/77283734

 

클린 아키텍처 - YES24

살아있는 전설이 들려주는 실용적인 소프트웨어 아키텍처 원칙『클린 코드』와 『클린 코더』의 저자이자 전설적인 소프트웨어 장인인 로버트 C. 마틴은 이 책 『클린 아키텍처』에서 이러한

www.yes24.com