개발하는 자몽

Hexagonal Architecture / Ports & Adapters Pattern 본문

Architecture & Tool

Hexagonal Architecture / Ports & Adapters Pattern

jaamong 2025. 7. 12. 17:39

Notice

이 글은 개인적으로 읽기 편하라고 개인 노션에 막 정리한 글을 공유한 것입니다. 스스로가 정리한 것을 까먹지 않기 위함...

 

배경

Hexagonal Architecture인지 포트 어댑터 패턴인지... 여러 개념들이 등장해서 어딘가 적어두면서 생각하지 않으면 이해하기가 너무 어렵다.

그래서 라인에서 작성한 글을 메인으로 잡고 잘 모르는 개념을 검색하며 노션에 막! 정리했다. 

https://www.notion.so/Hexagonal-Port-Adapter-22ee4ff26d86807497cbe5ddd763765d?source=copy_link

 

후기

살짝 프로젝트 적용해 보면서 느낀 점은 우선... 다 좋은데 코드 작성량이 정말 많이 많아진다. 필요한 무언가가 있으면 이걸 위해서 작성해야 하는 코드(파일)들이 +1이 아니라 +n이 되기 쉽다. 패키지도 많이 만들어진다. 그리고 개념을 정확히 알아두지 않으면 클래스 생성할 때마다 어디에 둬야 하는지 혼란스럽고, 이게 맞나? 싶어진다.

영속 계층과 애플리케이션 계층이 분리되어야 하다보니 이 계층 간 데이터 이동이 JPA 엔티티가 아니라 POJO를 통해 이루어지는데, 이때 레이어드 아키텍처랑 Spring Data JPA에 매우 익숙해져 있으면 처음에 트랜잭션 관련으로 불편을 겪을 수도 있다. 

장점은 보통 `@Service`를 붙이는 클래스들이 깔끔해지고 설계 방향성이 뚜렷하다 보니 DTO를 이동시킬 때 일관되게 만들 수 있다. 연관된 친구들끼리 두니 의도 파악에도 좋다. 테스트도 가벼워진다. 이 부분에서 크나큰 좋음을 느꼈다. (그런데 이제 수많은 코드 생성을 곁들인...)

 

참고

여기에는 다양한 참고 링크가 있습니다만, 노션에 첨부해뒀습니다.

 

 

 

 

 

'Architecture & Tool' 카테고리의 다른 글

Render로 FastAPI 배포한 후기  (0) 2025.03.08
윈도우에 프로메테우스 설치하기  (0) 2024.05.03
롤링 무중단 배포  (0) 2024.04.19
블루/그린 무중단 배포  (0) 2024.02.24
서버 부하 테스트 with Locust  (0) 2023.12.16
Comments