Software Engineering

[Hexagonal Architecture] 2. 구성

noahkim_ 2026. 6. 29. 15:13

1. 도메인

  • 순수 도메인 모델을 중심으로 구성됨
  • ✅ POJO data class (기술 의존 없음)

 

2. Application 

  • 유즈케이스 흐름을 담당하는 영역
  •  도메인 객체를 사용해서 시스템의 유즈케이스를 구현함
  •  외부 연동이 필요할 경우 outbound port를 의존하여 처리함 (구체적인 외부 기술 모름)
  •  outbound port 인터페이스를 정의하고 실제 구현체는 adapter-out에서 구현함

 

3. Port

  • 내부 애플리케이션이 외부와 소통하기 위해 정의해둔 인터페이스
  • ✅ 도메인과 어댑터 간 포트를 경계로 구분됨
  •  추상 API를 정의함
  •  목적에 맞는 프로토콜을 따름

 

Inbound Port

  • 외부 요청이 애플리케이션 기능을 실행할 수 있도록 정의한 입력 인터페이스
  • ex) Controller, Scheduler, Consumer 등

 

Outbound Port

  • 애플리케이션이 외부 시스템을 사용하기 위해 정의한 출력 인터페이스
  • ex) JPA Repository, Mongo Repository, Kafka Producer, Email Sender

 

4. Adapter

  • 포트를 실제 기술로 연결하거나, 외부 요청을 포트로 변환하는 코드
  •  외부와 코어 사이에서의 언어를 통역해줌
  • ➡️ 핵심 로직이 외부 기술을 직접 알지 않게 해줌

 

5. Bootstrap

  • 애플리케이션을 실제로 실행하는 시작점

 

 

출처