Dev/Article
헥사고날 아키텍처 (Hexagonal Architecture)
Luigi.yoon
2025. 3. 17. 02:21
헥사고날 아키텍처 (Hexagonal Architecture)
“애플리케이션의 내부 도메인 로직과 외부 인터페이스를 **포트(Port)**와 **어댑터(Adapter)**를 통해 명확히 분리하는 구조로, 외부 기술의 변화에 영향을 최소화하는 아키텍처 스타일”
- Core (도메인/애플리케이션): 비즈니스 로직 - 가운데
- Ports: Core가 필요로 하는 외부 기능 인터페이스 (Input/Output)
- Adapters: 실제 구현체 (예: DB, API, UI, 메시지큐 등)
항목 | 전통적인 레이어드 아키텍처 | 헥사고날 아키텍처 |
비즈니스 로직 위치 | Service Layer 안에 있음 | Core Domain 중심 |
외부 시스템 의존성 | 내부 레이어에 종속 | 포트를 통해 격리됨 |
테스트 용이성 | 외부 시스템이 필요함 | 모의 포트로 테스트 용이 |
유연성 | 기술 변경 시 영향 큼 | 어댑터만 교체하면 됨 |
관심사 분리 | 흐릿함 | 명확함 (Core vs Infra) |
대표 기술 | Spring MVC, DAO 중심 | DDD + Clean Architecture 지향 |
📌 주요 개념 구성
구성 요소 | 설명 |
Application Core | 도메인 모델, 유스케이스(서비스) |
Inbound Port | 사용자의 입력 인터페이스 (API 호출 등) |
Outbound Port | 외부 시스템에 대한 의존 인터페이스 (DB, API 등) |
Inbound Adapter | 실제 API 핸들러, 메시지 consumer 등 |
Outbound Adapter | 실제 DB 저장소, API 클라이언트 등 |