Hexagonal
경고
DDD 적용이 항상 좋은 것은 아닙니다.
CRUD만으로 해결되지 않는 경우, 복잡한 사용자 스토리, 잦은 변경 및 기능 추가, 팀원 모두 생소한 도메인 등 여러 조건에 따라 필요한 곳에 부분적으로 적용할 수 있습니다.
도메인 계층
애플리케이션 계층
- 시그니처의 구성은 아래 세 경우로 나뉩니다
- 도메인 객체를 포함하는 경우
- 원시 타입, String, DTO만 을 사용하는 경우
- Command, Query 객체를 사용하는 경우
- 영속성 트랜잭션 제어를 할 수 있습니다
- 인증, 인가 제어를 할 수 있습니다
- Noti, Publish, Email 전송 등을 할 수 있습니다
- 서비스 자체의 상태는 갖지 않습니다
사용자 시나리오(UseCase)
- 도메인 객체를 사용하여 특정 시나리오를 수행하는 것을 사용자 시나리오라고 합니다.
Command
객체를 사용하여 사용자 시나리오를 수행할 수 있습니다.- 자주 등장하는 흐름 아래와 같습니다.
- 리포지토리에서 엔티티 또는 애그리거트를 얻어옵니다.
- 도메인 서비스, 애그리거트, 엔티티 등을 사용하여 일련의 도메인 논리를 수행합니다.
- 리포지토리를 사용하여 변경사항을 저장합니다.
- 에러가 발생한 경우 User Interface에서 처리할 수 있는 방법을 노출시켜줍니다.
애플리케이션 서비스
- 도메인 객체와 상관없이 애플리케이션의 편의를 위해 제공되는 기능들을 애플리케이션 서비스라고 합니다.
Query
객체를 사용한 읽기 전용 기능을 제공할 수 있습니다.