1장에서 전통적인 계층형 아키텍처에 대해 부정적으로 이야기하면서 이 아키텍처에서는 결국 모든것이 영속성 계층에 의존하게 되어 ‘데이터베이스 주도 설계’가 된다고 이야기했다.
이번 장에서는 이러한 의존성을 역전시키기 위해 영속성 계층을 애플리케이션 계층의 플러그인으로 만드는 방법을 살펴보겠다.
영속성 계층 대신 애플리케이션 서비스에 영속성 기능을 제공하는 영속성 어댑터에 대해 이야기하겠다.
애플리케이션 서비스에서는 영속성 기능을 사용하기 위해 포트 인터페이스를 호출한다.
→ 이 포트는 실제로 영속성 작업을 수행하고 데이터베이스와 통신할 책임을 가진 영속성 어댑터 클래스에 의해 구현된다!
육각형 아키텍처에서 영속성 어댑터는 주도되는
혹은 아웃고잉
어댑터다.
애플리케이션에 의해 호출될 뿐, 애플리케이션을 호출하지는 않기 때문이다.
포트는 사실상 애플리케이션 서비스와 영속성 코드 사이의 간접적인 계층이다.
영속성 문제에 신경쓰지 않고 도메인 코드를 개발하기 위해 간접 계층을 추가하는 것임을 잊지 말자!
(⇒ 영속성 계층에 대한 코드 의존성을 없애기 위해)