-
실전! 멀티 모듈 프로젝트 구조와 설계 - 김대성세미나, 영상 요약정리 2022. 10. 11. 00:01728x90
인프콘 2022 김대성 님의 세미나를 요약한 내용입니다
https://www.inflearn.com/course/infcon2022
멀티 모듈 프로젝트를 적절하게 만드는 비법에 대해 전수해주신다고 합니다.
"WHY" 멀티 모듈 프로젝트 구조가 중요한가?
아키텍처 , 멀티 모듈 프로젝트는 나중에 변경하기 어렵습니다.
멀티 모듈 프로젝트는 배포와 빌드에 밀접한 영향을 미칩니다.
ADMIN, API, BATCH 등의 서버가 존재하고 이들이 공통으로 참조하는 CORE와 COMMON 모듈이 존재합니다.
다른 도메인 스펙이 늘어나면서 API가 많아지고 개발자는 중복을 제거하기 위해서 CORE, COMMON에 공통적인 기능들을 추가하면서 덩치가 점점 커지게 됩니다.
CORE, COMMON 내부에 구현되고 있는 Service와 Repository입니다.
이렇게 되면 여러가지 문제점들이 발생할 수 있습니다.
1. Too many Connections
의존하는 서버들이 많아짐으로써 커넥션 풀을 모두 사용해버리는 경우입니다.
2. java.lang.NoClassDefFoundError
특정한 모듈이 하위 버전 라이브러리를 참조하는 경우 업그레이드가 힘들어집니다.
3. Copy & Paste
유저 로그인에서는 생년월일들을 가져오지만 Admin에서는 유저 정보를 마스킹해야 하는 경우가 있을 수 있습니다.
이때 기존의 userService를 변경하지 않고 특정한 타입을 넘겨서 분기해서 값을 변경하는 경우를 자주 볼 수 있습니다.
4. All Build & Deploy
멀티 모듈 프로젝트를 나눌때 적절하게 나누어지지 않는다면 전체 빌드 배포가 되어야 하는 환경이 될 수 있습니다.
정리
- 잘못 구성되면 나중에 변경하기 고통스럽다.
- 프로젝트 초기에 이루어져야 하는 일련의 설계 과정이다.
- 개발 생산성에 막대한 영향을 미친다.
"WHAT" 어떤 기준으로 멀티 모듈 프로젝트 구조를 나누어야 할까?
일단 CORE, COMMON은 삭제하고 일부 중복을 허용합니다.
DDD에 나오는 바운디드 컨텍스트 개념을 활용합니다
4가지의 특성에 따라 나누어 구분하여 나눕니다.
정리
- 경계안에서 의미를 가질 수 있는 그룹을 정의하는 것이 가장 중요하다.
- 역할, 책임, 협력 관계가 올바른지 다시 한번 생각한다.
"HOW" 실전 멀티 모듈 프로젝트 구현을 어떻게 할까?
이렇게 구조를 잡고나면 boot라는 이름으로 시작하는 프로젝트에는 일괄적으로 특정 plugin을 적용할 수 있습니다.
프로젝트 구조가 조금 더 세부적으로 들어가면 다음과 같습니다
이렇게 프로젝트가 점점 커지게 되면 복잡도가 증가하고 빌드 시간이 늘어나게 됩니다.
설정 파일을 수정하게 되면 github webhook이 발생하고 빌드가 발생하게 됩니다.
이때 빌드가 발생하는 프로젝트를 다시 분리하여 사용합니다.
실제 구현에 대해서는 아직 잘 이해가 되지 않아서 정리하기보다는 직접 영상을 보시는 것이 더 좋을 것 같습니다.
'세미나, 영상 요약정리' 카테고리의 다른 글
우아한 ATDD (0) 2022.10.15 우아한멀티모듈 by 권용근님 (0) 2022.10.12 어느 날 고민 많은 주니어 개발자가 찾아왔다 - 김영한 (0) 2022.10.10 개편의 기술 - 배달 플랫폼에서 겪은 N번의 개편 경험기 - 권용근 (0) 2022.10.09 테스트하기 쉬운 코드로 개발하기 - 정진욱 (0) 2022.10.02