만들면서 배우는 클린 아키텍처
1장 계층형 아키텍처의 문제는 무엇일까?
- 계층형 아키텍처는 데이터베이스 주도 설계를 유도한다.
- 계층형 아키텍처를 구현할 때 보통 영속성 계층을 먼저 구현하고 이를 토대로 도메인 로직을 구현한다.
- 영속성 계층과 도메인 계층 사이에 강한 결합이 생긴다.
- 영속성 모델을 비즈니스 모델처럼 사용하게 되고 이로 인해 도메인 로직뿐만 아니라 즉시로딩/지연로딩, 데이터베이스 트랜잭션, 캐시 플러시 등 영속성 계층과 관련된 작업을 해야한다.
- 지름길을 택하기 쉬워진다.
- 만약 상위 계층에 위치한 컴포넌트에 접근해야 한다면 간단하게 컴포넌트를 계층 아래로 내려버린다.
- 어떤 계층에도 속하지 않는 것처럼 보이는 헬퍼 컴포넌트나 유틸리티 컴포넌트들이 아래로 계속 내려온다.
- 규칙이 깨졋을 때 빌드가 실패하도록 강제해야 한다.
- 테스트하기 어려워진다.
- 유스케이스를 숨긴다.
- 동시 작업이 어려워진다.
2장 의존성 분리하기
- Haxagonal Architecture
육각형에서 외부로 향하는 의존성이 없기 때문에 마틴이 클린 아키텍처에서 제시한 의존성 규칙이 그대로 적용된다. 모든 의존성은 코어를 향함.
3장 코드로 구성하기
- 계층형 구조
- 기능별 구조
- 아키텍처적으로 표현력 있는 패키지 구조