독서(Reading)/클린아키텍처(Clean Architecture)

5부 아키텍처 19장 정책과 수준

Chaany 2022. 12. 30.
728x90

1. 들어가며

  • 소프트웨어 시스템이란 정책을 기술한 것
  • 대다수 주요 시스템에서 하나의 정책은 이 정책을 서술하는 여러 개의 조그만 정책들로 쪼갤 수 있음
  • 소프트웨어 아키텍처를 개발하는 기술에는 정책을 신중하게 분리하고, 정책이 변경되는 양상에 따라 정책을 재편성하는 일도 포함됨
    • 동일한 이유로 동일한 시점에 변경되는 정책은 동일한 수준에 위치하며, 동일한 컴포넌트에 속해야 함
  • 아키텍처 개발은 재편성된 컴포넌트들을 비순환 방향 그래프로 구성하는 기술을 포함
  • 의존성 
    • 소스 코드, 컴파일 타임의 의존성이며, java의 경우 Import 구문에 해당함
    • 컴파일러가 잘 동작하기 위해서 필요함
  • 좋은 아키텍처라면 각 컴포넌트를 연결할 때 의존성의 방향이 컴포넌트의 수준을 기반으로 연결되도록 만들어야 함, 즉 저수준 컴포넌트가 고수준 컴포넌트에 의존하도록 설계되어야 함
  •  

2. 수준

  • 입력과 출력까지의 거리
  • 시스템의 입/출력 모두로부터 멀리 위치할수록 정책의 수준이 높아짐
  • 소스 코드 의존성은 그 수준에 따라 결합 되어야 하며, 데이터 흐름을 기준으로 결합되어서는 안됨
  • 정책을 컴포넌트로 묶는 기준은 정책이 변경되는 방식에 달려있음
  • 단일 책임 원칙(SRP)과 공통 폐쇄 원칙(CCP)에 따르면 동일한 이유로 동일한 시점에 변경되는 정책은 함꼐 묶임
  • 고수준 정책, 즉 입력과 출력에서부터 멀리 떨어진 정책은 저수준 정책에 비해 덜 빈번하게 변경되고, 보다 중요한 이유로 변경되는 경향이 있음
  • 모든 소스 코드 의존성의 방향이 고수준 정책을 향할 수 있도록 정책을 분리했다면 변경의 영향도를 줄일 수 있음

결론

  • 정책에 대한 논의는 단일 책임 원칙, 개방 폐쇄 원칙, 공통 폐쇄 원칙, 의존성 역전 원칙, 안정된 의존성 원칙, 안정된 추상화 원칙을 모두 포함함



728x90

댓글