강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

치즈초코우유님의 프로필 이미지
치즈초코우유

작성한 질문수

은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스

business logic 및 Entity 관리

강의_34] 공통 모듈 관련 질문입니다.

작성

·

21

·

수정됨

0

아직 MSA 경험이 없다보니 질문을 드려봅니다.

메시지에 관련된 Entity를 공통 모듈로 뺀다고 하셨는데용

  1. Lecture_1 라는 프로젝트, Lecture_2 라는 프로젝트가 있다고 가정을 했을 때

  2. '공통 모듈' 이라는걸 별도의 프로젝트로 구성한다는 말씀이실까요?

  3. 아니면 아래와 같이 프로젝트 root외에 모듈을 별도로 잡아서 한다는 말씀이실까영?

rootProject.name = 'Lecture_2'
include 'common' <-- 공통 모듈?
rootProject.name = 'Lecture_2'
include 'common' <-- 공통 모듈?

아, 그리고 최근에는 MSA에 대한 단점이 명확해지고 있어서 Modular Monolithic 아키텍처도 생겨나고 있는데 강사님께서는 이 부분에 대해서 어떻게 생각하시는지도 궁금합니다!

답변 2

0

Hong님의 프로필 이미지
Hong
지식공유자

안녕하세요 질문주셔서 감사합니다. 잠시 일이 있어서 답변이 늦었네요 ㅠㅠ.

 

일단 실무로 간다면 당연하게도 추가적인 레파지토리를 구성한다고 봐주시면됩니다. 타입 관련된 class들이 위치할것이고 외부에서는 단순히 import해서 사용을 하는 형태죠.

 

Msa라... 사실 요즘은 이 부분을 뺄수는 없다고 생각을해요. 서비스가 너무 무거워지는 부분에서 더 많은 안티패턴이 등장한다고 생각해서.

 

혹시 어떤부분에 대해서 모놀리틱을 고려하고 계시는지 공유 가능할까요?? 생각하시는 관점에 대해서 다루고 논의해보면 더 좋은 질문이 될꺼같습니다!

답변 너무 감사합니다!
첫번째 질문에 대한 답변은 바로 이해했습니다!

이제 막 5년차가 됐는데 아직까지 MSA를 다뤄본 경험이 아직 없으나 다양한 인사이트에서 MSA의 장단점이 명확하게 나오고 있고, 일반적인 모놀로틱과 MSA의 대척점의 중간 아키텍처(?)라고 하는 모듈러 모놀로틱에 대한 글을 봤기 때문입니다 ㅋ.ㅋ; 별거없죠...

아직 실무에서 경험해보지 않아 사이드프로젝트로 MSA를 만들어볼까 했으나.. 뭔가 광범위하고 오버엔지니어링이 아닐까 하는 느낌이라 일단은 일반적인 모놀로틱이 아닌 모듈러 모놀로틱에 대해서 진행하고자 생각해봤습니다!

강사님께서는 제가 경험하지 못한 부분을 많이 경험하신 것 같아서 실제 많은 인사이트에서 나오는 MSA 단점에 대한 피로도(?)가 있으신가 싶어서 궁금해서 여쭤봤습니다!

 

아, 참고로 개인적으로 궁금한건 어떤 비지니스 시스템이 MSA로 되어 있다면 유지보수 혹은 장애 등에 있어서 혼자서 다 관리할 수 있는지도 궁금하네요!

일때문에 계속 강의를 더디게 보고 있지만 그래도 완강까지 꾸준히 가보겠습니다! 답변 항상 감사합니다!!

0

안녕하세요, 인프런 AI 인턴입니다. 치즈초코우유님.

멀티모듈 아키텍처에서 공통 모듈을 어떻게 구성해야 하는지에 대한 질문이네요. 멀티모듈 구성은 각 프로젝트의 요구사항과 설계에 따라 달라질 수 있지만, 일반적인 방법들을 소개해드리겠습니다.

  1. 공통 모듈을 별도의 프로젝트로 구성:

    • 공통 모듈을 독립된 프로젝트로 빼게 되면 여러 개의 독립적인 서비스들이 이 모듈을 참조하여 공통적인 기능(예: 메시징, 로깅)을 사용할 수 있습니다. 이 경우, 공통 모듈은 재사용성을 높이고 유지보수를 용이하게 하는 장점이 있습니다.
  2. 프로젝트 내 모듈로 구성:

    • 공통 모듈을 프로젝트 내의 별도 모듈로 정의하는 방법입니다. 예를 들어, Gradle을 사용하여 프로젝트 내에 공통 모듈을 추가하고 각 모듈이 이 공통 모듈을 참조하는 방식으로 구성할 수 있습니다. 이 방식의 장점은 공통 코드를 쉽게 관리하고 프로젝트 내에서 일관성을 유지할 수 있다는 점입니다.
   rootProject.name = 'Lecture_2'
   include 'common' // 공통 모듈 추가

이 방식은 프로젝트의 구조나 팀의 개발 문화에 따라 적절히 선택하여 적용할 수 있습니다. 예를 들어, MSA 환경에서는 서비스 간 활용할 수 있는 공통 서비스를 아예 별도의 통합 프로젝트로 관리하여 필요한 경우 독립적으로 배포하거나 버전을 관리하는 경우도 있습니다.

관련 질문에 대한 논의로는 아래의 링크들을 참고해 보시면 실무 적용에서의 다양한 사례를 보실 수 있을 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

치즈초코우유님의 프로필 이미지
치즈초코우유

작성한 질문수

질문하기