강의

멘토링

로드맵

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

종혁님의 프로필 이미지
종혁

작성한 질문수

서버개발자 과제전형 완벽가이드 - 1편

외부 API 연동 - OpenAPI & RestClient

패키지 vs 모듈 선택 기준

작성

·

17

·

수정됨

0

학습관련 질문을 남겨주세요! 상세히 작성주시면 더 좋아요 🙂

 

안녕하세요, 재밌는 강의 만들어주셔서 감사합니다!

 

저는 먼저 구현 후, 강사님의 강의를 보며 리팩토링을 진행하고 있습니다.

 

제가 궁금한 것은 강사님은 external 모듈에서 naver/kakao 를 하위 모듈로 분리하셨는데, 저는 external 하위에 kakao 패키지, naver 패키지로 분리했었습니다.

 

그래서, 모듈로 분리하신 이유가 무엇인질 고민하다가 naver 와 kakao 의 수정되는 주기가 달라서 빌드/배포에 이점이 있겠다는 생각이 들었는데 강사님은 어떤 기준으로 모듈과 패키지를 선택하시는지 질문 드립니다.

 

답변 2

0

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

안녕하세요 종혁님 ~

먼저 구현하고 강의를 듣는 방법도 좋은데 잘 하고 계시네요 👍

넵 좋은 질문 해주셨네요! 말씀주신 이유도 맞습니다. 서로의 배포에 영향을 최대한 주지않기 위해서 분리한다로 봐주시면 될 것 같습니다.

"강사님은 어떤 기준으로 모듈과 패키지를 선택하시는지 질문 드립니다." ->

  • 서로간의 의존성 오염방지 (쉬운예로 api서버에서는 필요없는 종류의 db드라이버 같은 경우)

  • 모듈 단위의 빌드 및 배포

이렇게가 제일 큰 구분인거같네요~ 패키지로 나누면 좀 더 느슨한 격리가되고 (같은 모듈에서는 참조가되니) 모듈로 빼면 의존성을 명시를 안하면 강제격리가 되는점이 있기때문에 적절히 선택하면 되구요!

그리고 개인적으로 주의하는점은 처음부터 모듈로 너무 쪼개버리면 설정 오버헤드만 커지더라고요, 그래서 처음엔 패키지로 시작을 했다가 이 코드는 다른 서버에서도 써야겠다 혹은 이부분 빌드설정을 다르게 가져가야겠다 이런 판단이 들때 추출하는 방법도 좋습니다.

(그리고 엄청많이 하다보면 이정도 사이즈면 모듈이다, 패키지다 그런 감?이 오시게될텐데 그때는 별 고민없이 선택하시게될거에요)

답변이 되었을까요? 해결되지 않은 부분이 있다면 다시 말씀주시구요 🙏

 

0

안녕하세요, 인프런 AI 인턴입니다. 종혁님,

강의에 대한 흥미로운 접근과 질문을 주셔서 감사합니다! 강사님의 의도나 특정 설계에 대한 이유는 지식공유자만이 가장 잘 아시겠지만, 일반적으로 모듈과 패키지를 선택하는 기준에는 몇 가지 기본적인 성격이 있습니다.

모듈과 패키지 선택 기준

  1. 독립성: 각각의 모듈을 별도 프로젝트처럼 관리해야 하는 경우가 많습니다. 만약 두 컴포넌트(Naver와 Kakao)가 서로 다른 팀에 의해 독립적으로 관리되고, 개선과 배포 주기가 다르다면 모듈로 분리하여 독립적으로 빌드하고 배포할 수 있는 장점이 있습니다.

  2. 의존성 관리: 모듈은 그 자체로 의존성을 관리합니다. 각 모듈은 별도의 라이브러리나 프레임워크를 사용할 수 있으며, 해당 모듈에서만 관리됩니다.

  3. 재사용성과 확장성: 여러 프로젝트에서 공통적으로 사용될 가능성이 있는 기능이라면 모듈로 분리해서 다른 프로젝트에서도 쉽게 가져다가 쓸 수 있도록 할 수 있습니다.

  4. 복잡성에 따른 분리: 패키지는 하나의 애플리케이션 내부에서 논리적 그룹을 만드는 개념으로, 개별 컴포넌트가 상대적으로 단순하고, 사이드 이펙트가 적은 경우 패키지의 사용이 적합합니다. 반면 복잡도가 높은 경우 모듈로 분리하여 프로젝트 전체의 복잡도를 낮출 수 있습니다.

  5. 빌드 및 배포 최적화: 각각의 모듈이 독립적으로 빌드되고 배포될 수 있다는 점에서, 변경이 자주 발생하는 부분과 아닌 부분들을 분리하고자 하는 필요가 있을 때 모듈을 활용하는 것이 유리할 수 있습니다.

참고 링크

이 답변이 종혁님의 고민 해결에 조금이나마 도움이 되길 바랍니다. 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 상세히 답변해 주실 것입니다.

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

종혁님의 프로필 이미지
종혁

작성한 질문수

질문하기