본문 바로가기

도메인주도개발5

[도메인 주도 개발 시작하기] 07. 이벤트와 CQRS [도메인 주도 개발 시작하기] 07. 이벤트와 CQRS 1. 이벤트 1.1 시스템 간 강결합 문제 쇼핑몰에서 구매를 취소하면 환불 처리를 해야하는데, 이 때 환불 기능을 실행하는 주체는 주문 도메인 엔티티가 될 수 있다. 도메인 객체에서 환불 기능을 실행하려면 환불 기능을 제공하는 도메인 서비스를 파라미터로 받아 실행 할 수 있다. 또는 응용 서비스에서 실행할 수도 있는데, 보통 결제 시스템은 외부에 존재하므로 응용서비스는 외부에 있는 결제 시스템이 제공하는 환불 서비스를 호출한다. 이 때 두가지 문제가 발생할 수 있다. 첫번째로 외부 서비스가 정상이 아닐 경우 트랜잭션 처리에 대한 부분이다. 익셉션이 발생하면 트랜잭션을 롤백 해야 할까? 아니면 일단 커밋해야 할까? 두번째 문제는 성능에 관한 것이다. .. 2022. 7. 23.
[도메인 주도 개발 시작하기] 06. 도메인 서비스 & 도메인 모델과 바운디드 컨텍스트 [도메인 주도 개발 시작하기] 06. 도메인 서비스 & 도메인 모델과 바운디드 컨텍스트 1. 여러 애그리거트가 필요한 기능 도메인 영역의 코드를 작성하다 보면 한 애그리거트로 기능을 구현할 수 없을 때가 있다. 대표적인 예가 결제 금액 계산 로직인데, 실제 결제 금액을 계산할 때는 다음과 같은 내용이 필요하다. 상품 애그리거트: 구매하는 상품의 가격이 필요하다. 또한 상품에 따라 배송비가 추가되기도 한다. 주문 애그리거트 : 상품별로 구매 개수가 필요하다. 할인 쿠폰 애그리거트: 쿠폰 별로 지정한 할인 금액이나 비율에 따라 주문 총 금액을 할인한다. 회원 애그리거트: 회원 등급에 따라 추가 할인이 가능하다. 이 상황에서 생각해 볼 수 있는 방법은 주문 애그리거트가 필요한 데이터를 모두 가지도록 한 뒤 할.. 2022. 7. 16.
[도메인 주도 개발 시작하기] 04. 응용 서비스와 표현 영역 [도메인 주도 개발 시작하기] 04. 응용 서비스와 표현 영역 1. 표현 영역과 응용 영역 잘 만든 도메인이 제 기능을 하려면 사용자와 도메인을 연결해주는 매개체가 필요하다. 응용 영역과 표현 영역이 사용자와 도메인을 연결해 주는 매개체 역할을 한다. 표현 영역은 사용자의 요청을 해석한다. 사용자의 요청을 받은 표현 영역은 URL, 요청 파라미터, 쿠키, 헤더 등을 이용해서 사용자가 실행하고 싶은 기능을 판별하고 그 기능을 제공하는 응용 서비스를 실행한다. 응용 영역에 위치한 서비스는 실제 사용자가 원하는 기능을 제공한다. 응용 서비스의 메서드가 요구하는 파라미터와 표현 영역이 사용자로부터 전달받은 데이터는 형식이 일치하지 않기 때무에 표현 영역은 응용 서비스가 요구하는 형식으로 사용자 요청을 변환한다... 2022. 7. 9.
[도메인 주도 개발 시작하기] 03. 애그리거트 [도메인 주도 개발 시작하기] 03. 애그리거트 1. 애그리거트 - 온라인 쇼핑몰 시스템을 개발할 때 아래와 같이 상위 수준 개념을 이용해서 전체 모델을 정리하면 전반적인 관계를 이해하는 데 도움이 된다. 위의 상위 수준 모델을 개별 객체 단위로 다시 그려보면 아래와 같다. 상위 모델에 대한 이해 없이 개별 객체 단위 수준에서 개념을 파악하려면 더 오랜 시간이 걸린다. 백 개 이상의 테이블을 한 장의 ERD에 표시하면, 개별 테이블 간의 관게를 파악하느라 전반적인 구조나 큰 수준에서의 도메인 간의 관게를 파악하기 어려워져, 코드를 변경하고 확장하는 것이 어려워진다. 복잡한 도메인을 이해하고 관리하기 쉬운 단위로 만들려면 상위 수준에서 모델을 조망할 수 있는 방법이 필요한데, 그 방법이 바로 애그리거트다... 2022. 7. 3.
[도메인 주도 개발 시작하기] 02. 아키텍처 개요 [도메인 주도 개발 시작하기] 02. 아키텍처 개요 1. 네 개의 영역 - 아키텍처를 설계할 때 출현하는 전형적인 네 가지 영역 : 표현, 응용, 도메인, 인프라스트럭처 표현 사용자의 요청을 받아 응용 영역에 전달하고 응용 영역의 처리 결과를 다시 사용자에게 보여주는 역할 응용 시스템이 사용자에게 제공해야 할 기능을 구현한다. ex) 주문 등록, 주문 취소, 상품 상세 조회 등 기능을 구현하기 위해 도메인 영역의 도메인 모델을 사용 로직을 직접 수행하기 보다는 도메인 모델에 로직 수행을 위임한다. 도메인 도메인의 핵심 로직을 구현 ex) 배송지 변경, 결제 완료, 주문 총액 계산 등 인프라스트럭처 구현 기술에 대한 것을 다룸. DB연결, 메시징 큐 구현, SMTP를 이용한 메일 발송 기능, REST AP.. 2022. 6. 24.
728x90
반응형