현재 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을 정하는 문제는
오롯이 내 프로젝트에서 그것들을 어떻게 쓰는지
에 달려있다는것을 깨달았다.
귀중한 시간이었고 참회의 눈물을 흘리며
리팩토링할 날이 머지 않았음을 느낀다.
그 전에 완성부터..!