7. 헥사고날 아키텍쳐 이해해보자

Port 와 Adapter

흐름 보기

1. Controller 진입점

2. Port In (입력 인터페이스)

3. UseCase 구현 (핵심 비즈니스로직)

4. Port Out (출력 인터페이스)

5. Adapter (실제 DB구현)

6. Entity (DB 전용 모델)

의존 방향 (아래 -> 위)


                
              ┌─────────────────────────────────┐
              │                                 │
              │    ┌───────────────────────┐    │
              │    │                       │    │
              │    │   Domain Model        │    │ ← 아무것도 의존하지 않음
              │    │   (DailyStep)         │    │    가장 순수한 코드
              │    │                       │    │
              │    └───────────────────────┘    │
              │                                 │
              │    UseCase + Port               │ ← Domain만 의존
              │                                 │
              │         application/            │
              ├─────────────────────────────────┤
              │                                 │
              │    Adapter                      │ ← application에 의존
              │    Entity                       │
              │                                 │
              │         adapter/                │
              ├─────────────────────────────────┤
              │                                 │
              │    Controller                   │ ← application에 의존
              │                                 │
              │         bootstrap/              │
              └─────────────────────────────────┘

호출방향 vs 의존방향

즉, 호출방향과 의존방향은 다를 수 있다. DIP

기능 추가한다고 가정해보자