CH08 경계 간 매핑하기
Last updated
Last updated
그림에서 확인할 수 있듯이 헥사고날 아키텍처는 포트를 기준으로 경계가 뚜렷하게 나뉘어져 있다. 그리고 포트는 인터페이스로 추상화되어 있어 각 경계에서 의존 역전이 발생하고 있다.
이러한 경계성을 유지하기 위해서는 경계를 기점으로 데이터를 주고 받는 과정에서 각각의 객체를 사용해야 한다. 극단적으로 말해서 엔티티가 어댑터에서 사용되는 일이 없어야 한다는 것이다. 엔티티가 포트를 넘어가지만 어댑터에서는 이를 용도에 맞게 변경해서 처리해야한다. 아래 예시를 보자.
웹 어댑터 -> input port query, command 객체가 웹 어댑터에서 다뤄질 수 있는데 이를 usecase 가 사용할 수 있는 데이터로 변환해서 port 에 넣어줘야 한다. 반대로 웹 어댑터가 데이터를 어떻게 받든 usecase 내에서 command, query 를 정의하고 있다면 이에 맞게 웹 어댑터가 변경해서 넣어 줘야 한다.
output port -> 영속성 어댑터 엔티티가 포트를 통해 넘어가게 되면 어댑터에서는 JPA entity 로 바꾸든 어떻든 영속성 어댑터가 사용할 객체에 맞게 엔티티를 변경 해야 한다.
이 챕터에서는 이와 같이 헥사고날 아키텍처에서 발생하는 매핑 현상에 대해서 어떠한 전략을 취할지에 대해서 다루고 있다. 특별히 정리할 만한 내용은 없어서 이정도만 정리하고 넘어간다.