헥사고날 아키텍처(포트&어댑터 아키텍처)

JooHeon·2022년 6월 30일
0

목표 : 외부 의존성(클라이언트, 영속화)을 제거

장점 : 단위 테스트 하기가 더욱 쉬워진다.

OOP 측면에서 발전되어 추상화 및 변경과 확장이 쉬워진다.

단점 : 보일러 플레이트 코드가 많아진다.

결론 : MSA 환경(대규모 서비스)에서 DDD 관점으로 OOP를 더 높은 수준으로 하기 위한 아키텍처인 것 같습니다.

아래는 세부 내용입니다.

용어

Use Case : 어떤 행위를 추상화한 인터페이스입니다. 코드로 빗대어 보면 현재의 Service 인터페이스를 논리적인 단위로 나눈 것이라고 볼 수 있습니다. 구현체는 Service로 여러 Use Case를 상속받고 있습니다.

Entity : 순수한 도메인 객체를 나타냅니다.

Input Port : 컨트롤러 → 서비스로 전달되는 Dto를 순수한 도메인 객체(Entity)로 바꿔서 전달합니다.

Output Port : 서비스 → 리포지토리로 전달되는 순수한 도메인 객체를 영속성 도메인 객체(JPA)로 바꿔서 전달합니다.


참고자료

https://reflectoring.io/spring-hexagonal/

0개의 댓글