멀티모듈은 정말 자유자재로 필요에 의해 만들어지는 것을 볼 수 있다.
이번 글에서는 어떤 상황에서 module 분리를 고려해야하는지에 대해 고민한 것을 짧게 공유하고자 한다.
어떤 상황에서 module 분리를 고려해야 할까?
모듈은 패키지보다 더 큰 개념으로, 패키지에서 분리의 필요성을 느낄 경우에 module로의 분리가 필요하다. 그렇다면 패키지에서 분리, 구분의 필요성을 느끼는 경우가 무엇이 있을까?
1. 참조 불가 수준의 코드 분리
2. 실행의 분리
찾아보고 고민해봤을 때 이 두가지가 있다고 느껴졌다. 1의 경우에는 Layer 별로 모듈을 구분하며, 레이어의 룰들을 모듈에 잘 녹여서 참조의 흐름을 일관성있게 가져갈 수 있다. 그리고, dependency도 레이어에 맞는 것들만 가져갈 수 있다는 것이 아주 큰 장점이라고 느껴졌다. 그리고 2의 경우는 하나의 서비스 아래에서 완전히 라이프 사이클이 다른 프로젝트를 구분하는 용도로 사용하는 것이라고 느껴졌다. 런타임을 완전히 구분할 수 있어서, 장애 전파를 막을 수 있고, 빌드 시간 단축등의 효과를 누릴 수 있다.
자신이 처한 상황에서 가능한 모든 비용을 고려해봤을 때, 1) 모듈로 레이어를 구분할 때 비용과 구분하지 않고 개발할 때의 비용을 잘 비교하고, 2)실행이 독립적으로 일어나면 효과를 누릴 수 있는 지 고민해보고 선택하면 좋을 것 같다.
'기술고민' 카테고리의 다른 글
2024 6개월 이모저모 (2) | 2024.06.28 |
---|---|
네? 사이드 프로젝트에 쿠버네티스요? (무중단 배포) (0) | 2024.05.02 |
Fixture Monkey를 써야 할까? (0) | 2024.04.16 |
bootJar 와 jar 각자 어떤 책임이 있을까? (0) | 2024.04.14 |
스프링 시큐리티를 쓰지 맙시다. (feat. JWT) (4) | 2024.04.13 |