강의

멘토링

커뮤니티

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

JunBass님의 프로필 이미지
JunBass

작성한 질문수

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

헥사고날 아키텍처의 사실과 오해 (2)

애그리거트 루트의 하위 도메인들의 depth가 깊어질 때 문의

작성

·

28

0

안녕하세요 .

 

강의에서 애그리거트 루트가 하위 도메인을 일관성을 유지하기 위해

member.updateInfo() 로 MemberDetail updateinfo() 를 호출하는것을 보았는데요

 

만약 Profille에 여러 속성(프로필주소, 프로필이미지를 불러올 수 있는 주소,정보 등이 존재)이 있어 값 타입이 아닌 Entity로 존재해야 할 경우엔

member.updateInfo() -> memberDetail.updateInfo() -> profile.updateInfo() 로 depth가 내려갈 것 같은데요.

 

뭔가 잘못된 방법 같아서요..

혹시 이런 경우에는 어떻게 도메인을 설계해야 좋을지 궁금합니다...!!

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. JunBass님!

애그리거트 루트의 하위 도메인들이 중첩되어, 여러 단계로 깊어질 때 설계에 대한 고민을 하고 계시군요. 이러한 문제는 깊이 있는 도메인 구조에서 자주 발생하는 어려움입니다. 도메인 주도 설계(DDD)에서는 이러한 문제를 해결하기 위해 몇 가지 설계 원칙과 방법론을 제시합니다.

1. 깊이를 줄이는 설계

  • 도메인 응집력 유지: 도메인의 응집력을 강화하여, 관련 속성이나 기능들을 하나의 개념으로 묶어서 관리할 수 있습니다. 프로파일과 관련된 정보들이 같은 범주에 속한다면, 이를 하나의 엔티티나 컴포넌트로 만들고, 그 내부에서 로직을 처리하도록 하는 것이 좋습니다. 예를 들어, Profile 엔티티가 관련된 속성과 기능들을 가지고 있도록 합니다.

2. 애그리거트의 크기 조정

  • 애그리거트 조정: 각 애그리거트는 하나의 완전한 트랜잭션 단위가 되어야 합니다. 너무 많은 정보를 한 애그리거트에 넣으면, 복잡도가 증가하고 성능 문제가 발생할 수 있습니다. 따라서, 애그리거트를 적절한 크기로 유지하도록 조정합니다.

3. 이벤트 주도 설계

  • 도메인 이벤트 사용: 예를 들어, Profile 정보가 업데이트되면 관련 이벤트를 발생시키고, 이 이벤트를 통해 다른 시스템이나 모듈에 변경 사항을 전파시킬 수 있습니다. 이 방식은 시스템 구성 요소 간의 결합도를 낮추고 유연성을 높일 수 있습니다.

추가적인 참고 사항

강의에서 배운 내용들을 통해 이러한 문제 해결에 대한 새로운 통찰을 얻으실 수 있습니다. 또한, 다음과 같은 관련 강의나 질문들을 통해 더욱 깊이 있는 이해를 해보실 것을 추천드립니다.

이런 부분들이 초기 설계 시점에서 잘 고려된다면 깊이 있는 도메인 구조에서 발생할 수 있는 문제들을 효과적으로 해결할 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

JunBass님의 프로필 이미지
JunBass

작성한 질문수

질문하기