계층형 아키텍쳐의 문제
위 그림은 일반적인 3 계층 아키텍처를 표현한다.
- 웹 계층에서 요청을 받아 도메인 or 비즈니스 계층에 있는 서비스로 요청을 보낸다.
- 서비스에서는 비즈니스 로직을 수행하고, 도메인 엔티티의 현재 상태를 조회하거나 변경하기 위해 영속성 계층의 컴포넌트를 호출한다.
이 계층형 아키텍처의 문제가 무엇인지 정리한다.
데이터베이스 주도 설계 유도
계층형 아키텍처의 토대는 데이터베이스이다.
웹 계층은 도메인 계층에, 도메인 계층은 영속성 계층에 의존하기 때문이다.
계층형 아키텍처에서는 데이터베이스의 구조를 먼저 생각하고, 이를 토대로 도메인 로직을 구현한다.
ORM 프레임워크를 계층형 아키텍처와 결합하면, 영속성 계층과 도메인 계층 간 강한 결합이 생긴다.
위와 같이, ORM 에 의해 관리되는 엔티티들은 영속성 계층에 둔다.
계층은 아래 방향으로만 접근 가능해서, 도메인 계층에서는 엔티티에 접근 가능하고 엔티티를 사용한다.
서비스는 영속성 모델을 비즈니스 모델처럼 사용하게 되는 것이다.