단일 책임 원칙(SRP)
‘책임’ → ‘변경할 이유’ 로 해석이 더 맞을 듯
“컴포넌트를 변경하는 이유는 오직 하나뿐이어야 한다”
- 어떤 다른 이유로 sw를 변경하더라도 이 컴포넌트에 대해서는 전혀 신경 쓸 필요 없다.
- 변경돼도 우리가 기대한 대로 동작할 것
의존성 역전 원칙(DIP)
계층형 아키텍처에서 항상 의존성은 아래를 향하므로, 상위 계층들이 하위 계층보다 변경할 이유가 더 많다. (영속성 계층을 변경할 때마다 도메인도 변경해야 함)
“코드상의 어떤 의존성이든 그 방향을 역전시킬 수 있다”
의존성의 양쪽 코드를 모두 제어할 수 있을 때만 의존성 역전 가능.
- 도메인 객체를 표현하는 엔티티부터 도메인 계층으로 올린다
- 영속성 계층에 있는 Repository가 엔티티에 의존하므로 ‘순환 의존성’ 발생 → DIP 적용하는 부분
- 도메인 계층에 Repository 인터페이스를 만들고, 실제 Repository는 영속성 계층에서 구현하도록 한다.
클린 아키텍처
: 도메인 코드가 바깥으로 향하는 어떤 의존성도 없어야 함. 대신 모든 의존성이 도메인 코드를 향하고 있음.
- 서비스보다 세분화된 유스케이스를 통해 ‘넓은 서비스’ 문제 피할 수 있음.
- 도메인 코드를 자유롭게 모델링 가능. 순수한 DDD 적용 가능.
- 대신 도메인이 철저히 분리되므로 애플리케이션의 엔티티에 대한 모델을 각 계층에서 유지보수 해야 함.
- 도메인 계층과 영속성 계층이 데이터 주고받을 때, 두 엔티티를 서로 변환해야 한다.
Hexagonal Architecture
「만들면서 배우는 클린 아키텍처-자바 코드로 구현하는 클린 웹 애플리케이션」 을 읽고 개인 학습용으로 정리한 내용입니다.
'💻 > BOOK' 카테고리의 다른 글
만들면서 배우는 클린 아키텍처 - (3) 코드 구성하기 (0) | 2023.02.09 |
---|---|
만들면서 배우는 클린 아키텍처 - (1) 계층형 아키텍처의 문제는 무엇일까? (0) | 2023.02.08 |
Spring Quick Start - 내용 정리(2) (0) | 2021.03.25 |
Spring Quick Start - 내용 정리(1) (0) | 2021.03.24 |
Inside JavaScript - 내용정리(2) (0) | 2021.01.28 |