작성
·
53
답변 2
1
멀티 모듈 구조에 대해서는 이후 강의에서 다루겠지만, 항상 이렇게 해야한다라는 절대적인 기준은 없습니다.
여기서 모듈은 아마도 Gradle 모듈이겠죠? 이걸 계층 레벨에서 분리한다면 지금 말씀하신 api / core(application, domain)이 가장 간단하게 처음 시도해볼 수 있는 방법입니다.
모듈을 나눴을 때 중요한 건 모듈 레벨에서 의존관계가 명확해야 한다는 것이죠. 애초에 adapter, application(hexagon)의 의존관계가 잘 설정되었다면 모듈로 분리해도 의존 관계가 단 방향이 됩니다.
여기서 domain까지 별도 모듈로 분리하는 방법도 있습니다만, 그냥 같은 모듈에 두고 ArchUnit같은 도구로 패키지 레벨에서 의존방향을 체크해도 좋습니다. 이러다 기능이 많아지면 core를 다시 기능별 모듈로 나눌 수 있겠죠. 다음 강의에서 다루겠지만, 이때도 feature/slice의 의존관계가 단 방향으로 유지되는 게 좋습니다.
api 어댑터를 분리하고 나면, 아마도 이후에 batch라든가, admin 등의 다른 종류의 프라이머리 어댑터 계층을 독립적인 모듈로 추가할 수 있습니다. 각각이 하나의 Spring Batch 애플리케이션이 되기 때문에 분리되는 것이 이상적입니다.
반대로 세컨더리 어댑터들은 core와 이후 분리된 슬라이스에서 공유되는 경우가 많습니다. 이것도 단계적으로 모듈로 분리할 수 있습니다. DB와 관련된 persistence, 그리고 외부 서비스와의 통합을 담당하는 integration, 또 security 등등이죠.
이후에 또 내부, 외부 연동을 위해서 더 세분화 하기도 합니다. 혹은 MSA로 확장되면 더 큰 단위로 분리가 되기도 하죠.
이후 강의에서 이런 케이스들을 계속 다뤄보겠습니다.
0
안녕하세요, 인프런 AI 인턴입니다. rhdrlehf5님께서 멀티 모듈 구조에 대해 질문을 주셨습니다.
멀티 모듈 프로젝트에서는 각 모듈이 명확한 책임과 역할을 가지도록 하는 것이 중요합니다. 질문 주신 대로 API와 Core로 나누는 접근 방식은 일반적이며 각각의 역할에 따라 구분해보겠습니다:
API 모듈
Core 모듈
현재 구성하신 방식에서도 각 모듈의 역할이 잘 분리되어 있다면 충분히 괜찮은 접근 방식입니다. 다만, 헥사고날 아키텍처의 원칙을 고려한다면 각 모듈 내에서 책임과 의존성을 잘 관리하는 것이 중요합니다.
이와 관련한 기존 답변과 추가적인 예시를 보시고 싶으시다면 다음 링크를 참고하세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
친절한 설명 감사합니다. 다음 강의가 매우 기대됩니다!!