본문 바로가기
클린아키텍처

[클린아키텍처] 30장 ~ 32장 데이터베이스, 웹, 프레임워크는 세부사항이다, 33장 사례 연구

by bzerome240 2022. 3. 20.

아키텍처 관점에서 볼 때 데이터베이스는 엔티티가 아니다

데이터베이스는 세부사항이라서 아키텍처 구석요소 수준으로 끌어올릴 수 없다.

데이터베이스는 데이터에 접근할 방법을 제공하는 유틸리티다.

 

관계형 데이터베이스

 

데이터 접근 및 관리 시스템

1) 파일 시스템

- 문서 전체를 자연스럽고 편리하게 저장하는 방법을 제공한다.

2) 관계형 데이터베이스 관리 시스템 RDBMS

- 내용을 기반으로 레코드를 자연스럽고 편리하게 찾는 방법을 제공한다.

 

 


33장 사례 연구 : 비디오 판매

제품

  • 개인과 기업에게 비디오를 웹을 통해 판매한다.

유스케이스 분석

  • 단일 책임 원칙에 따르면 이들 네 액터가 시스템이 변경되어야 할 네 가지 주요 원인이다.
  • 신규 기능을 추가하거나 기존 기능을 변경해야 한다면, 그 이유는 반드시 이들 액터 중 하나에게 기능을 제공하기 위해서다.
  • 따라서, 우리는 시스템을 분할하여, 특정 액터를 위한 변경이 나머지 액터에게는 전혀 영향을 미치지 않게 만들고자 한다.
  • 중앙의 점선으로 된 부분은 추상 유스케이스이다.
  • 추상 유스케이스는 범용적인 정책을 담고 있으며, 다른 유스케이스에서 이를 더 구체화한다.

컴포넌트 아키텍처

  • 이중으로 된 선은 아키텍처 경계를 나타낸다.
  • 뷰, 프레젠터, 컨트롤러로 분리된 전형적인 분할 방법을 확인할 수 있다.
  • 또한 대응하는 액터에 따라 카테고리를 분리했다는 사실도 확인할 수 있다.
  • Catalog View, Catalog Presenter는 추상 유스케이스를 처리하는 방식
  • 이 뷰와 프레젠터는 해당 컴포넌트 내부에 추상 클래스로 코드화될 것이며, 상속받는 컴포넌트에서는 이들 추상 클래스로부터 상속받은 뷰와 프레젠터 클래스를 포함한다.

의존성 관리

  • 위 그림에서 제어흐름은 오른쪽에서 왼쪽으로 이동한다.
  • 모든 화살표가 오른쪽에서 왼쪽을 가리키지않음에 주목.
  • 대다수의 화살표는 왼쪽에서 오른쪽으로 향한다.
  • 이는 아키텍처가 의존성 규칙을 준수하기 때문이다.
  • 모든 의존성은 경계선을 한 방향으로만 가로지르는데, 항상 더 높은 수준의 정책을 포함하는 컴포넌트를 향한다.
  • 또, 사용 관계 (열린 화살표)는 제어흐름과 같은 방향으로, 상속 관계(닫힌 화살표)는 제어흐름과 반대 방향을 가리킴에 주목하자. 이는 개방 폐쇄 원칙을 적용했음을 보여준다.

결론

  • 위 그림은 두 가지 서로 다른 차원의 분리 개념을 포함하고 있다.
  • 하나는 단일 책임 원칙에 기반한 액터의 분리이며, 두 번째는 의존성 규칙이다.
  • 이런 방식으로 코드를 한번 구조화하고 나면 시스템을 실제로 배포하는 방식은 다양하게 선택할 수 있게 된다.

33장 사례 연구 : 비디오 판매

제품

  • 개인과 기업에게 비디오를 웹을 통해 판매한다.

유스케이스 분석

  • 단일 책임 원칙에 따르면 이들 네 액터가 시스템이 변경되어야 할 네 가지 주요 원인이다.
  • 신규 기능을 추가하거나 기존 기능을 변경해야 한다면, 그 이유는 반드시 이들 액터 중 하나에게 기능을 제공하기 위해서다.
  • 따라서, 우리는 시스템을 분할하여, 특정 액터를 위한 변경이 나머지 액터에게는 전혀 영향을 미치지 않게 만들고자 한다.
  • 중앙의 점선으로 된 부분은 추상 유스케이스이다.
  • 추상 유스케이스는 범용적인 정책을 담고 있으며, 다른 유스케이스에서 이를 더 구체화한다.

컴포넌트 아키텍처

  • 이중으로 된 선은 아키텍처 경계를 나타낸다.
  • 뷰, 프레젠터, 컨트롤러로 분리된 전형적인 분할 방법을 확인할 수 있다.
  • 또한 대응하는 액터에 따라 카테고리를 분리했다는 사실도 확인할 수 있다.
  • Catalog View, Catalog Presenter는 추상 유스케이스를 처리하는 방식
  • 이 뷰와 프레젠터는 해당 컴포넌트 내부에 추상 클래스로 코드화될 것이며, 상속받는 컴포넌트에서는 이들 추상 클래스로부터 상속받은 뷰와 프레젠터 클래스를 포함한다.

의존성 관리

  • 위 그림에서 제어흐름은 오른쪽에서 왼쪽으로 이동한다.
  • 모든 화살표가 오른쪽에서 왼쪽을 가리키지않음에 주목.
  • 대다수의 화살표는 왼쪽에서 오른쪽으로 향한다.
  • 이는 아키텍처가 의존성 규칙을 준수하기 때문이다.
  • 모든 의존성은 경계선을 한 방향으로만 가로지르는데, 항상 더 높은 수준의 정책을 포함하는 컴포넌트를 향한다.
  • 또, 사용 관계 (열린 화살표)는 제어흐름과 같은 방향으로, 상속 관계(닫힌 화살표)는 제어흐름과 반대 방향을 가리킴에 주목하자. 이는 개방 폐쇄 원칙을 적용했음을 보여준다.

결론

  • 위 그림은 두 가지 서로 다른 차원의 분리 개념을 포함하고 있다.
  • 하나는 단일 책임 원칙에 기반한 액터의 분리이며, 두 번째는 의존성 규칙이다.
  • 이런 방식으로 코드를 한번 구조화하고 나면 시스템을 실제로 배포하는 방식은 다양하게 선택할 수 있게 된다.
728x90
반응형

댓글