Conversation
|
아무래도 처음 접하는 개념에 대해서 바로 적용하기는 힘들었을 것 같아요. 멀티 모듈에 대해서 설명을 가볍게 드리자면 1개의 프로젝트가 커지면서 발생하는 문제에 대해서는 모놀리틱 아키텍처와 MSA에 대해서는 개념이 익숙하실 것 같아요. MSA는 모둘별로 별도의 프로젝트에서 관리하여 1개의 거대한 프로젝트를 쪼개서 구성하는 방식인데 멀티 모듈은 1개의 거대한 프로젝트를 물리적으로 분리하는 접근하는 방식 보다는 1개의 프로젝트안에서 사용하되 모듈별로 쪼갠다는 개념이라고 생각하면 조금은 편합니다. 만약 MSA에서 도메인별로 별도의 프로젝트를 만들고 이를 각각의 프로젝트에서 별도로 관리하게 된다면 관리할 프로젝트도 많고, 각 프로젝트 별로 사용하는 모듈 (ex. jpa, mysql) 별로 버전 관리, 자바의 버전 관리를 해줘야 해서 불편합니다. 멀티모듈은 1개의 프로젝트에서 동일한 자바 버전, 다른 외부 기술의 버전 들을 1개의 프로젝트에서 동일하되, 각각의 모듈은 독립적으로 배포 유지 관리 될 수 있게 설계된 방법입니다. 이런 내용은 글로만 확인하기에는 이해하는데 혹은 그림을 그리기에 무리가 있을 수도 있으니 다양한 코드 및 예시를 보면서 구체화 시키는 것이 좋습니다. 작은 프로젝트의 경우 1개의 도메인만 다루기 떄문에 현재 설정한 구조로 설계해도 상관은 없지만 말씀주신대로 대규모 서비스 회사에서는 여러개의 도메인을 다루는 경우가 많이 있습니다. 그때 각각의 모듈별로 프로젝트를 분리하지 않고 자바 버전, mysql 버전, 기타 외부 기술의 버전을 1개로 통일해서 관리하여 사용하고 이를 각각의 도메인 별로 가져다 사용하는 구조로 이뤄져 있고 네이밍을 말한 것 처럼 도메인-module, module-도메인으로 진행합니다. 이런 공통으로 사용하는 설정들은 root gradle에 설정하고 각각의 모듈의 gradle에서는 root gradle을 가져와서 사용하도록 설계합니다. 만약 특정 도메인에서 다른 기술을 추가해야 하는 경우에는 root gradle이 아닌 해당 모듈의 gradle에 추가하여 해당 기술이 필요 없는 다른 모듈에는 영향을 주지 않는 방식으로 구조를 설계합니다. 레퍼런스의 경우 기존 레디스 노션 문서를 참고하는 것이 가장 좋을 것 같고 위의 설명드린 예시를 대략이나마 보여주는 레퍼런스는 아래와 같습니다. |
좋은점
아쉬운점
|
제목(title)
작업 내용
발생했던 문제와 해결 과정을 남겨 주세요.
이번 주차에서 고민되었던 지점이나, 어려웠던 점을 알려 주세요.
리뷰 포인트
기타 질문