ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 실전! 멀티 모듈 프로젝트 구조와 설계 - 김대성
    세미나, 영상 요약정리 2022. 10. 11. 00:01
    반응형

    인프콘 2022 김대성 님의 세미나를 요약한 내용입니다

    https://www.inflearn.com/course/infcon2022

     

    [무료] 인프콘 2022 다시보기 - 인프런 | 강의

    인프런의 첫 오프라인 콘퍼런스, 인프콘 2022에서 진행된 오프닝 및 발표 세션을 영상으로 다시 보실 수 있습니다., - 강의 소개 | 인프런...

    www.inflearn.com

     

    멀티 모듈 프로젝트를 적절하게 만드는 비법에 대해 전수해주신다고 합니다.

     

    "WHY" 멀티 모듈 프로젝트 구조가 중요한가?

    아키텍처 , 멀티 모듈 프로젝트는 나중에 변경하기 어렵습니다.

    멀티 모듈 프로젝트는 배포와 빌드에 밀접한 영향을 미칩니다.

     

    초기 프로젝트

    ADMIN, API, BATCH 등의 서버가 존재하고 이들이 공통으로 참조하는 CORE와 COMMON 모듈이 존재합니다.

     

    1년뒤 프로젝트

    다른 도메인 스펙이 늘어나면서 API가 많아지고 개발자는 중복을 제거하기 위해서 CORE, COMMON에 공통적인 기능들을 추가하면서 덩치가 점점 커지게 됩니다.

     

    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이 발생하고 빌드가 발생하게 됩니다.

     

    이때 빌드가 발생하는 프로젝트를 다시 분리하여 사용합니다.

     

    실제 구현에 대해서는 아직 잘 이해가 되지 않아서 정리하기보다는 직접 영상을 보시는 것이 더 좋을 것 같습니다.

    반응형

    댓글

Designed by Tistory.