20220711) DDD와Aggregate Root 설정

jihunnit·2022년 7월 11일
0
post-thumbnail

현재 ceos 15th All.G 백엔드로써 프로젝트 WEATO 를 진행하고 있는 중이다. 이거때문에 블로그의 진척이 더뎠다.

플젝 진행하면서 커밋할 뿐 아니라 진행 사항에 대해 블로그에 정리하는사람들도 많던데 그게 나는 아니다

사실 이걸 하면서도 내가 가장 애매하고 고민했던 부분은 도메인을 어떻게 설계하는가? 였다. 그 부분이 나에게 지속적인 갈등과 결정을 요구하는 부분이었는데.. 일단 대부분의 예제들이 주문 예제를 들고 있는것을 보며 으흠으흠 그렇구만..하고 넘어갔지만 정작 내 프로젝트인 커뮤니티에 적용을 하려고 보니 이게 영 설계하기가 쉽지 않았다.

뭔가 Aggregate Root로써 Member(회원)Post(게시글) 이 존재하여야 한다! 까지는 명확히 이해를 했다. 그런데 그 이후, Comment(댓글) 에 대해서는? 이 부분이 가장 나를 고민하게 만들었다. 어떻게보면 Post와 Comment의 관계는 뗄레야 뗄 수 없는 관계이다. 그렇게보면 Post의 Aggregate 안에 Comment가 들어가는것은 매우 타당해보인다. 하지만, 그러면 Aggregate 끼리는 Aggregate Root을 통해서만 관계를 맺는 어떠한 규칙? 의 적용이 애매해지는것 같고.. 뭐가 정답이지..?

하는 고민을 하며 여러가지 검색을 해 보다가 일단 덮어두고 개발했다. 내 생각으로는 일단 Comment는 Post Aggregated에 들어가는게 맞다고 생각하였다.

그러다 그 이후 최범균님의 책 도메인 주도 개발 시작하기 를 우연히 읽게 되었고, 다시 내 프로젝트의 DDD를 생각해보게 되었다. 그리고는 무작정 글을 찾아 나섰는데,
stackoverflow의 한 글을 읽게 되었다.
Post와 Comment의 Aggregate 관련 stackoverflow 게시글

여기서도 다들 내용이 갈리는 상황이지만, 다들 결국 핵심은 하나였다.

그래서 네 프로젝트에서 어떻게 쓰이는데?

예를 들면, 커뮤니티 중에서 댓글만 따로 이렇게 위젯으로 보여준다거나, 뭔가 댓글이 Post에 종속적이지 않게 쓰이는 쓰임새가 있는 커뮤니티들도 세상에 존재한다.
이런 커뮤니티들은 Post와 Comment가 다른 Aggregate를 써야 할 것이다.

반면에, 댓글이 오직 게시글에 종속적으로 나타나는 커뮤니티들도 분명히 있다. 이런 커뮤니티의 경우에는 아무래도 Post와 Comment가 같은 Aggregate에 존재 할 것이다.

이렇게 글을 읽으면서
결국 DDD의 핵심. Aggregate Root을 정하는 문제는
오롯이 내 프로젝트에서 그것들을 어떻게 쓰는지

에 달려있다는것을 깨달았다.

귀중한 시간이었고 참회의 눈물을 흘리며
리팩토링할 날이 머지 않았음을 느낀다.
그 전에 완성부터..!

profile
인간은 노력하는 한 방황한다

0개의 댓글