헥사고날아키텍처-정리중

Published: by Creative Commons Licence

헥사고날 아키텍처 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 등록, 설정 등)

✅ 클린 아키텍처 (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 – 애플리케이션 설정 (보안, 빈 등록 등)

📝 헥사고날 아키텍처 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 등록, 설정 등)