witherview / witherview_backend

🎯 위더뷰 Backend
https://api.witherview.com/swagger-ui.html
2 stars 0 forks source link

witherview 를 멀티 모듈 프로젝트로 구성하기 #33

Open MoonYeeun opened 3 years ago

MoonYeeun commented 3 years ago

AS-IS:

현재 위더뷰는 모놀리틱 그 자체이다.

스크린샷 2021-06-06 오후 5 03 19

현재의 문제

이 문제를 어떻게 해결할 것인가?

TO-BE:

멀티 모듈로 위더뷰 프로젝트를 구성한다.

멀티 모듈 프로젝트는 하나의 시스템을 단위로 만든다.

여기서 말하는 시스템은 아래와 같은 정의를 말한다.

system

출처: 우아한 형제들 - 멀티 모듈 설계 이야기

# 사실 현재 위더뷰 내부에서 도메인 별로 관리를 하고 있는데 굳이 멀티 모듈로 변경할 필요가 있을까? 라는 생각이 들 수도 있지만

변경시 장점

모듈 분리

참고 : 우아한 테크 세미나, 우아한 형제들 - 멀티 모듈 설계 이야기

= 계층 분리 (역할과 책임에 따라)

스크린샷 2021-06-06 오후 9 59 22 스크린샷 2021-06-07 오전 12 12 35

우아한 형제들에서 사용했던 방식을 참고하되, 우리의 서비스에 맞게 구성

공통 모듈 계층 :

= 하나의 프로젝트의 모든 모듈에서 사용될 수 있는 것

이 때 외부 의존 관계 없이 java class만 정의

도메인 모듈 계층 :

= 하나의 모듈은 하나의 인프라스트럭쳐만 책임지도록 한다.

스크린샷 2021-06-06 오후 9 53 22

내부 모듈 계층 :

= 저장소, 도메인 외 시스템에서 필요한 모듈

= 어플리케이션, 도메인 비지니스를 모른다.

어플리케이션 모듈 계층 :

= 독립적으로 실행 가능한 어플리케이션 모듈 계층

= 하위 설계 했던 모듈들을 조립하여 서비스 비즈니스를 완성시킨다.

application

#

주저리주저리

inspirit941 commented 3 years ago

괜찮을 거 같아요. 그럼 나머지 모듈 대비 가장 이질적인 성격이 강하고 / (프론트엔드 검증은 아직 덜끝났지만 일단은 완성된) 채팅쪽부터 모듈로 분리해볼까요?

inspirit941 commented 3 years ago

정확히 어떤 단위로 모듈을 분리하는 게 좋을지는 저도 고민해봐야 말씀드릴 수 있을 거 같아서 링크주신 테크세미나 글들부터 소화해본 뒤에 미팅요청 드리겠습니다