💻/BOOK

만들면서 배우는 클린 아키텍처 - (2) 의존성 역전하기

김씨리 2023. 2. 8. 23:26

단일 책임 원칙(SRP)

‘책임’ → ‘변경할 이유’ 로 해석이 더 맞을 듯

“컴포넌트를 변경하는 이유는 오직 하나뿐이어야 한다”
  • 어떤 다른 이유로 sw를 변경하더라도 이 컴포넌트에 대해서는 전혀 신경 쓸 필요 없다.
  • 변경돼도 우리가 기대한 대로 동작할 것

 

 

의존성 역전 원칙(DIP)

계층형 아키텍처에서 항상 의존성은 아래를 향하므로, 상위 계층들이 하위 계층보다 변경할 이유가 더 많다. (영속성 계층을 변경할 때마다 도메인도 변경해야 함)

“코드상의 어떤 의존성이든 그 방향을 역전시킬 수 있다”

의존성의 양쪽 코드를 모두 제어할 수 있을 때만 의존성 역전 가능.

  • 도메인 객체를 표현하는 엔티티부터 도메인 계층으로 올린다
  • 영속성 계층에 있는 Repository가 엔티티에 의존하므로 ‘순환 의존성’ 발생 → DIP 적용하는 부분
  • 도메인 계층에 Repository 인터페이스를 만들고, 실제 Repository는 영속성 계층에서 구현하도록 한다.

 

 

클린 아키텍처

: 도메인 코드가 바깥으로 향하는 어떤 의존성도 없어야 함. 대신 모든 의존성이 도메인 코드를 향하고 있음.

  • 서비스보다 세분화된 유스케이스를 통해 ‘넓은 서비스’ 문제 피할 수 있음.
  • 도메인 코드를 자유롭게 모델링 가능. 순수한 DDD 적용 가능.
  • 대신 도메인이 철저히 분리되므로 애플리케이션의 엔티티에 대한 모델을 각 계층에서 유지보수 해야 함.
    • 도메인 계층과 영속성 계층이 데이터 주고받을 때, 두 엔티티를 서로 변환해야 한다.

 

 

Hexagonal Architecture

 

 

 


「만들면서 배우는 클린 아키텍처-자바 코드로 구현하는 클린 웹 애플리케이션」 을 읽고 개인 학습용으로 정리한 내용입니다.