도메인이란 소프트웨어로 해결하고자 하는 문제 영역을 말한다.하나의 도메인은 여러 하위 도메인으로 나뉠 수 있다.ex) 온라인 서점 도메인온라인 서점 소프트웨어는 온라인으로 책을 판매하는 데 필요한 상품조회, 구매, 결제, 배송 추적 등의 기능을 제공해야 한다. 이때,
표현 영역 \- HTTP 요청을 응용 영역이 필요로 하는 형식으로 변환해서 응용 영역에 전달하고 응용 영역의 응답을 HTTP 응답으로 변환하여 전송한다.응용 영역 \- 로직을 직접 수행하기 보다는 도메인 모델에 로직 수행을 위임한다.도메인 영역 \- 도메인 모
객체 모델이 복잡해지면 구조나 도메인간의 관계를 파악하는 것이 어려워진다. 이는 코드를 변경하고 확장하는 것이 어려워진다는 것을 뜻함.애그리거트를 이용한다면, 복잡한 도메인을 연관된 객체로 묶어 도메인 간의 관계를 쉽게 파악할 수 있음애그리거트는 경계를 가짐 \- 도
데이터 보관소로 RDBMS를 사용할 때, 객체 기반의 도메인 모델과 관계형 데이터 모델간의 매핑을 처리하는 기술인 ORM을 사용리포지터리 인터페이스는 애그리거트와 같이 도메인 영역에 속하고리포지터리를 구현한 클래스는 인프라스트럭처 영역에 속함리포지터리 구현 클래스를 인
CQRS : 명령(command) 모델과 조회(Query) 모델을 분리하는 패턴Specification : 검색 조건을 다양하게 조합해야 할 때 사용애그리거트가 특정 조건을 충족하는지 검사할 때 사용하는 인터페이스리포지터리나 DAO 는 검색 대상을 걸러내는 용도로 스펙
도메인이 제 기능을 하기 위해선 사용자와 도메인을 연결해 주는 매개체가 필요함 (응용 영역, 표현 영역)표현 영역 사용자의 요청을 해석 (HTTP요청)응용 서비스의 실행 결과를 형식에 맞게 응답 (HTML, JSON)응용 영역실제 사용자가 원하는 기능 제공도메인 객체를
도메인 영역의 코드를 작성하다 보면, 한 애그리거트로 기능을 구현할 수 없을 때가 있음한 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안됨 \- 도메인 서비스를 별도로 구현하는 방법으로 문제를 해소할 수 있음도메인 서비스는 도메인 영역에
한 주문 애그리거트에 대해 운영자는 배송 준비 상태로 변경할 때 사용자는 배송지 주소를 변경한다면 어떻게 될까스레드는 각각 트랜잭션을 커밋할 때 수정한 내용을 DBMS에 반영함.때문에 하나의 애그리거트를 여러 사용자가 동시에 변경하고자한다면 데이터의 일관성이 깨질 수
\-한 도메인은 여러 하위 도메인으로 구분된다. 때문에 한 개의 모델로 여러 하위 도메인을 모두 표현하려고 시도하면 오히려 모든 하위 도메인에 맞지 않는 모델을 만들게 된다.논리적으로 같은 존재처럼 보이지만 하위 도메인에 따라 다른 용어를 사용하는 경우카탈로그에서 상품
10.1 시스템 간 강결합 문제 도메인 서비스에서 외부서비스를 호출 할때 다양한 문제가 발생할 수 있음 ex) 구매를 취소하여 환불을 진행할때 도메인 서비스에서 외부서비스를 호출하여 환불 진행 보통 결제 시스템은 외부에 존재하므로 외부서비스를 도메인 서비스에서 호출함