도메인: 소프트웨어로 해결하고자 하는 문제 영역ex) 온라인 서점 - 도서 검색, 구매, 장바구니, 쿠폰, 결제, 포인트 적립, 배송 추적 등이 구현되어 있음 ➡️ 개발자: '어케했노...' 즉, 온라인 서점은 개발자에게 소프트웨어로 해결하고자하는 도메인하위 도메인:
1. 아키텍처 2. DIP 3. 도메인 영역의 주요 구성요소 4. 인프라스트럭처 5. 모듈
1. 애그리거트 3.1 애그리거트 애그리거트: 상위 수준에서 모델을 정리하는 것. 도메인 모델의 복잡한 관계를 이해하는데 도움을 줌. 필요성: 도메인 객체 모델이 복잡해지면 도메인 간의 관계를 파악하기 어려워지고, 그렇게 되면 코드를 변경하고 확장하는 것이 어려워지므
4.1.1 모듈 위치리포지터리 인터페이스는 도메인 영역에 속하고, 리포지터리를 구현한 클래스는 인프라스트럭처 영역에 속함4.1.2 리포지터리 기본 기능 구현리포지터리가 제공하는 기본 기능ID로 애그리거트 조회하기애그리거트 저장하기리포지터리 인터페이스 형식애그리거트를
CQRS란, 명령 모델과 조회 모델을 분리하는 패턴. 명령 모델: 상태를 변경하는 기능을 구현할 때 사용 조회모델은 데이터를 조회하는 기능을 구현할 때 사용 1. 스펙 5.2 검색을 위한 스펙 스펙 애그리거트가 특정 조건을 충족하는지를 거사할 때 사용하는
도메인이 제 기능을 하려면 사용자와 도메인을 연결해 주는 매개체가 필요함.사용자에게 기능을 제공하려면 도메인과 사용자를 연결해 줄 표현 영역과응용 영역이 필요함 \- 표현 영역: 사용자의 요청을 해석 \- 응용 영역: 실제 사용자가 원하는 기능을 제공사용자와의 상
한 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안 됨.억지로 구현하면 애그리거트는 자신의 책임 범위를 넘어서는 기능을 구현➡️ 코드가 길어지고 외부에 대한 의존이 높아지게 되며 코드를 복잡하게 만들어 수정을 어렵게 만드는 요인이 됨.애그리
➡️ 두 스레드는 개념적으로 동일하지만 물리적으로 서로 다른 애그리거트 객체를 사용함. 이 경우 일관성이 깨지는 문제가 발생할 수 있다.해결책DBMS가 지원하는 트랜잭션과 함께 애그리거트를 위한 추가적인 트랜잭션 처리 기법이 필요함.애그리거트에 대해 사용할 수 있는 대
9.1 도메인 모델과 경계 하위 도메인 마다 같은 용어라도 의미가 다르고 같은 대상이라도 지칭하는 용어가 다를 수 있음 하위 도메인 마다 사용하는 용어가 다르므로 올바른 도메인 모델 개발을 위해선 하위 도메인 마다 모델을 만들어야 함 모델은 특정한 컨텍스트(문맥) 하에
환불 기능을 실행하는 과정에서 외부 환불 서비스를 호출할 때 생기는 문제외부 시스템이 정상이 아닐 경우 트랜잭션 처리를 어떻게 할지 애매함외부 시스템의 응답 시간이 길어질 경우 내부시스템의 성능 또한 직접적으로 영향을 받음위와 같은 문제가 발생하는 이유는 내부 BOUN
여러 애그리거트에서 데이터를 가져와야 할 경우, 애그리거트를 참조하는 방식을 사용하면 즉시 로딩과 같은 JPA의 쿼리 관련 최적화 기능을 사용할 수 없음애그리거트 간의 연관을 ID가 아니라 직접 참조하는 방식으로 연결해도 고민거리가 생김➡️ 시스템의 상태를 변경할 때와