이러한 육각형 설계는 인터페이스나 기반 요소의 변경에 적게 영향을 받는 쪽으로 설계하는 것이 목표이다.
Hexagonal Architecture가 전통적인 설계보다 좋은 점은, 인터페이스를 다중화하더라도 변경되는 코드가 거의 없으며, 많은 코드 공유를 통해서 재사용도 높일 수 있다.
다시 말하자면, 이러한 구조로 설계를 하면 인터페이스나 기반 요소가 사용자의 요구사항 혹은 수용 능력에 영향을 받아서 변경되더라도 애플리케이션 동작(도메인 로직 혹인 비즈니스 로직)에는 영향을 주지 않는다.그만큼 돔인 로직이 견고해지며 소프트웨어의 지속 가능성을 높일 수 있다.
Hexagonal Architecture를 포트와 어댑터 설계라고 부르는 이유가 있다.
딱봐도 포트와 어댑터라고 힌트가 나와있는데, 포트는 인터페이스라고 생각하면 된다.
예를 들면, 클래스의 메서드 시그니처나 Java의 인터페이스이다.
어댑터는 디자인 패턴에서와 같이 클라이언트에 제공해야 할 인터페이스를 따르면서도 내부 구현은 서버의 인터페이스로 위임하는 것이다.
포트의 역할은 변경이 잦은 어댑터와 애플리케이션의 결합도를 낮추는 것이다.
애플리케이션은 핵심 로직에 가깝기 때문에 결합도를 낮추는 것이 상당히 중요하다.
그리고 애플리케이션은 도메인에 의존하지만 도메인은 애플리케이션과 어댑터에 의존하지 않는다.
즉, 애플리케이션이나 어댑터가 변경되어도 핵심 로직인 도메인은 아무런 영향을 받지 않는다.
글로만 보면 이해가 잘 되지 않으니, Hexagonal Architecture를 검색해봐서 많은 사람들이 작성한 설계를 보면서 이해하는 것이 좋다.