**핵사고날 아키텍처(Hexagonal Architecture)**는
도메인(비즈니스 규칙)을 애플리케이션의 중심에 두고,
외부 세계(UI, DB, 메시징, 외부 API 등)와의 의존성을 명확히 분리하기 위한 아키텍처 스타일이다.
Alistair Cockburn이 제안했으며,
Ports and Adapters Architecture라는 이름으로도 불린다.
2. 핵심 목적
| 목표 | 설명 |
| 비즈니스 보호 | 도메인 로직이 기술 변화에 영향받지 않게 함 |
| 변경 용이성 | UI, DB, 외부 시스템 교체가 쉬움 |
| 테스트 용이성 | 도메인을 독립적으로 테스트 가능 |
| 의존성 제어 | 의존성 방향을 단방향으로 강제 |
3. 구조 개요 (큰 그림)
핵사고날은 3가지 핵심 요소로 설명된다.
① Domain (Hexagon / Core)
· 비즈니스 규칙의 집합
· 순수한 정책과 판단
· 외부 기술에 대해 아무것도 모름
② Ports (포트)
· 도메인이 외부와 통신하기 위해 정의한 인터페이스
· “무엇이 필요하다”만 선언
· 구현은 없음
③ Adapters (어댑터)
· 포트를 실제 기술로 구현
· Web, DB, Message Queue, External API 등
· 기술 의존성은 여기에만 존재
4. 의존성 규칙
핵사고날 아키텍처의 절대 규칙은 하나다.
모든 의존성은 안쪽(Domain)으로만 향한다
5. Inbound / Outbound 개념
핵사고날은 포트를 방향성으로 구분한다.
Inbound Port
· 외부에서 도메인을 호출
· 예: UseCase, Application Service 인터페이스
· “무엇을 할 수 있는가?”
Outbound Port
· 도메인이 외부 기능을 필요로 함
· 예: Repository, External API 인터페이스
· “이 기능이 필요하다”
포트는 항상 도메인 내부에서 정의된다.
6. 전통적 레이어드 아키텍처와의 차이
| 구분 | 레이어드 | 핵사고날 |
| 중심 | 기술 계층 | 도메인 |
| 의존성 | 위 → 아래 | 항상 도메인 방향 |
| DB 위치 | 핵심 | 외부 |
| 테스트 | 통합 중심 | 도메인 단위 |
| 변경 영향 | 큼 | 작음 |
핵사고날은 DB를 핵심으로 보지 않는다.
DB는 교체 가능한 “어댑터”일 뿐이다.
7. 왜 ‘육각형(Hexagon)’인가
육각형은 비유적 표현이다.
· 여러 방향에서 접근 가능
· UI, API, Batch, Message Consumer 등
· 입력 경로는 여러 개, 핵심은 하나
즉, 도메인은 여러 입구를 가질 수 있지만, 규칙은 하나다
8. 요약
핵사고날 아키텍처는
“비즈니스 규칙을 중심에 고립시키고,
기술은 모두 바깥으로 밀어내는 구조”이다.

'소프트웨어 개발 > 소프트웨어 설계 패턴' 카테고리의 다른 글
| ORM 개념 및 관련 라이브러리 (0) | 2022.12.11 |
|---|---|
| 리액티브 프로그래밍이란? (0) | 2022.11.30 |
댓글