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

100end님의 프로필 이미지
100end

작성한 질문수

클론코딩에서 알려주지 않는 것들 (보안, DDD, 마이크로서비스) 2편

Aggregate, Review Entity 구현해보기

brand와 product

해결된 질문

작성

·

171

1

aggregate 영역이 엔티티(product)와 엔티티(review)간의 생명 주기가 밀접한 관계를 갖고 있는 것들을 하나의 영역으로 묶은 것이라고 말씀해주셨는데
그럼 농심이라는 brand가 있고 농심 브랜드에 속한 양파링, 새우깡이 있을 경우에 어느날 농심 브랜드가 퇴점을 하게된다면 농심이라는 brand의 product인 양파링, 새우깡은 같이 삭제가 될테니 brand와 product를 aggregate 영역으로 묶을 수 있는건가요?

답변 1

1

애프터캠프님의 프로필 이미지
애프터캠프
지식공유자

네 맞습니다. 비즈니스 규칙이 Product와 Brand 관계를 강하게 한다면 하나의 Aggregate로 묶을 수 있을 것입니다. 하나의 Aggregate로 묶는다면 Brand가 Aggregate root가 될 수 있겠네요.

이 강의에선 실제로 복잡한 비즈니스 규칙을 구현하지 않아서 Product, Brand 간 Aggregate 경계가 불분명해서 이런 질문이 발생한 것 같습니다. 하지만 Brand, Product가 서로 다른 Aggregate로 존재할 수 있는 케이스가 있습니다.

 

첫번째는, 쿠팡 같이 같은 브랜드를 수많은 셀러들이 판매하는 비즈니스에서 관찰할 수 있습니다.

만약 Brand가 독립적으로 관리되며, Product와의 직접적인 관계가 비즈니스 로직에 크게 영향을 미치지 않는 경우입니다. 예를 들어, 여러 제조업체가 동일한 Brand를 사용하는 상황에서, Brand의 변경이나 관리가 Product에 직접적인 영향을 주지 않는 경우, Brand와 Product는 별도의 Aggregate로 관리될 수 있습니다.

두번째는, 무신사처럼 패션 브랜드가 자사브랜드를 판매하기 위해 입점하는 형태의 비즈니스일 것 같습니다. 실제로 강의에서도 이 비즈니스 형태를 생각하고 Brand를 Product를 같은 Aggregate 에 포함시키지 않았습니다.

Brand가 주로 마케팅이나 브랜딩 목적, 정산으로만 사용되고, 실제 Product의 관리나 로직과는 거리가 먼 경우, 각각을 독립된 Aggregate로 관리하는 것이 효율적일 수 있습니다.

100end님의 프로필 이미지
100end
질문자

답변 감사합니다!

100end님의 프로필 이미지
100end

작성한 질문수

질문하기