설명
- 애플리케이션을 도메인(핵심 규칙) 중심으로 두고, 외부 세계(DB, 웹, 메시징, UI 등)와의 연결은 Port & Adapter를 통해서만 하도록 만든 구조
핵심
- 비즈니스 로직(도메인)은 바깥 세상(웹, DB, 메시지 큐 등)을 전혀 모름
- 바깥이 안으로 들어올 땐 “입력 포트”
- 안에서 바깥으로 나갈 땐 “출력 포트”
- 각 포트에 맞는 어댑터가 붙어 동작
구성 요소
Domain(핵심)
- 비지니스 규칙만 담음
- 외부 기술에 전혀 의존하지 않음
- Entity, Value Object, Domain Servie 등이 여기에 속함
Ports(포트)
- 도메인이 외부와 통신하기 위한 추상 인터페이스
- 2가지 존재
- 입력 포트(Input Port)
- 외부에서 도메인을 호출하는 규격
- 예. CreateBoardUseCase(게시글 작성 시나리오)
- 출력 포트(Output Port)
- 도메인이 외부 시스템(DB, API, 메시지 브로커)을 호출하기 위한 규격
- 예. BoardRepository 인터페이스