Untitled

1. 엔티티(도메인)

예를 들어 영화예매 소프트웨어가 있다면 그건 영화를 좀더 쉽고 빠르게 예매하려는

사용자의 문제를 해결하기 위해 릴리즈된 프로그램이다.

이때 문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야를 도메인이라고 정의한다.

그리고 그 도메인에서 다루는 핵심 개체를 엔티티라고 말한다.

기존 계층형 아키텍처에서 생각을 해보면 테이블에 매핑되는 엔티티, JPA로 관리되는

엔티티등을 쉽게 예시로 들 수 있다.

2. 유스케이스

클린아키텍처에서 말하는 유스케이스는

내가 만들고자 하는 시스템(혹은 서비스)을 사용하는 클라이언트가 그 시스템을 통해 하고자 하는 것

3. 헥사고날 아키텍처에서의 도메인과 유스케이스 <=> 비지니스 계층

도메인과 유스케이스 관계의 핵심은 비지니스 로직이 도메인에 존재해야한다

OOP와도 겹치는 부분인데, 도메인 엔티티는 상태를 가지고 있고, 비지니스 로직상 상태에 변경이 일어난다면

이 변경의 책임은 도메인이 지어야한다는 의미다. 따라서 도메인은 최대한 두껍게 가져가고,

이 도메인의 비지니스 로직을 오케스트레이션하는 역할이 바로 유스케이스의 역할이 된다.

4. 주도하는(Driving) 어댑터와 주도되는(Driven) 어댑터 / 포트

유스케이스의 의존성 화살표방향을 보면 Input Port에는 구현을, Output Port에는 의존관계를 맺고 있다.

유스케이스에 Input되는 포트와 어댑터를 주도하는 어댑터/포트, 혹은 Incomming Adapter/Port라고 칭하며,