인프런 커뮤니티 질문&답변

학습자님의 프로필 이미지
학습자

작성한 질문수

Microservice 내부 아키텍처 와 EventStorming 설계

VO, Entity 궁금한 부분이 있습니다.

작성

·

333

1

안녕하세요. 좋은 강의 감사합니다.

섹션 8. 실습 - 마이크로서비스 별 도메인 모델 정의 장에서 궁금점이 생겼는데요.

우선 제가 DDD 를 공부하며 이해한 VO 는 특별한 identity 가 존재하지 않는 immutable 한 값을 표현하는 객체로 이해했습니다. 실제로 강의에서도 동일한 내용을 이해할 수 있었어요.

하지만 실습 장에서 설계된 RentalItem, LateFee 가 VO 즉, 불변 값 객체와는 거리가 있다고 느껴져서요.

RentalItem 에서 "is_overdued: boolean", LateFee 에서 "point: Point" 는 각 addLateFee, removeLateFee, overdueItem operation 에 의해서 값이 변경될 것으로 모델이 확인됩니다.

제가 그동안 DDD 를 공부하며 이해했더 내용 중 하나는 Aggregate Pattern 에서 Aggregate 가 되는 것은 Root Entity 로 명명되며 Root Entity 내부에 표현되는 것은 Entity 와 VO 로 학습을 했었는데요. 이러한 RentalItem, LateFee 는 Entity 가 되어야 하는 객체 아닌가 의문이 들어서 질문드려요!

좋은 강의 감사합니다 :)

답변 1

2

han jeong heon님의 프로필 이미지
han jeong heon
지식공유자

안녕하세요. 좋은 지적 정말 감사합니다. ^ ^

RentalItem와 LateFee에 대해 말씀드리면 대여된아이템 , 연체료라는 특유의 값을 설명하기 위해 vo 오브젝트로 선언했습니다. 다만 지적하신바와 같이, RentalItem에 overdued, overDueStartDate라는 연체된아이템이라는 개념을 넣으므로써 상태변화를 야기 시켰네요. 말씀하신 바처럼 엔티티로 규정하고 변경하던지 아니면 아무래도 RentalItem과 OverDueItem개념을 각각의 VO로 분리하여 해결해야 할 것 같습니다. 연체가 발생되면, RentalItem이 제거되고 OverDueItem이 생성되는 방식으로요.

그런데 추가로 말씀하신 LateFee 는 자체 행위를 가지는 vo로 addLateFee 시 증가된 point로 새로운 객체를 반환하기 때문에 불변의 범주에 있다고 생각됩니다.

요즘 구현 강의도 준비중인데 참고하여 강의 보완 진행 하겠습니다.

이렇게 심도 깊은 의견 주셔서 정말 도움이 되네요. ^ ^ 감사합니다.

혹시 구현 강의는 언제쯤 나올까요??

han jeong heon님의 프로필 이미지
han jeong heon
지식공유자

 

9월 목표로 열심히 준비중입니다. ^ ^

학습자님의 프로필 이미지
학습자

작성한 질문수

질문하기