헥사고날아키텍처-정리중
헥사고날 아키텍처 vs 클린 아키텍처 - 패키지 구조 예시
✅ 헥사고날 아키텍처 (Hexagonal Architecture)
com.example.project
- application - 유스케이스 (비즈니스 로직)
port.in
– 들어오는 포트 (예: 서비스 인터페이스)port.out
– 나가는 포트 (예: DB, 외부 API 인터페이스)service
– 유스케이스 구현체
- domain – 순수 도메인 모델 (엔티티, 밸류 오브젝트 등)
- adapter – 포트 구현체
in.web
– REST API, GraphQL 등 사용자 인터페이스out.persistence
– JPA, MyBatis 등 DB 연동 구현체out.external
– 외부 API 통신 구현체
- config – 스프링 설정 클래스 (Bean 등록, 설정 등)
- application - 유스케이스 (비즈니스 로직)
✅ 클린 아키텍처 (Clean Architecture)
com.example.project
- domain – 핵심 도메인 계층
model
– 엔티티, 밸류 오브젝트service
– 도메인 서비스
- usecase – 애플리케이션 계층
port.in
– 유스케이스 인터페이스 (입력)port.out
– 리포지토리 등 외부 인터페이스interactor
– 유스케이스 구현체
- infrastructure – 외부 연동 계층
persistence
– JPA, MyBatis 등 DB 접근external
– 외부 API 연동
- interface – 사용자 인터페이스 계층
web
– REST 컨트롤러
- config – 애플리케이션 설정 (보안, 빈 등록 등)
- domain – 핵심 도메인 계층
📝 헥사고날 아키텍처 vs 클린 아키텍처 비교
항목 | 헥사고날 아키텍처 | 클린 아키텍처 |
---|---|---|
중심 계층 | application (유스케이스) |
domain (도메인 모델) |
도메인 계층 | domain |
domain |
유스케이스 | application.service |
usecase.interactor |
입력 포트 | application.port.in |
usecase.port.in |
출력 포트 | application.port.out |
usecase.port.out |
외부 연동 계층 | adapter.in , adapter.out |
interface , infrastructure |
💡 TIP
- 헥사고날 아키텍처는
포트와 어댑터
중심의 설계입니다.- 클린 아키텍처는 의존성 방향을
안에서 바깥으로만
흐르게 유지합니다.
adapter 포트 구현체
in.web : REST API, GraphQL 등 사용자 인터페이스
out.persistence : JPA, MyBatis 등 DB 연동 구현체
out.external : 외부 API 통신 구현체
config 스프링 설정 클래스 (Bean 등록, 설정 등)