-
Notifications
You must be signed in to change notification settings - Fork 4
[Trouble Shooting] 서브 모듈 분리
강찬욱 edited this page Jan 25, 2025
·
1 revision
- MSA 프로젝트이므로 각 서비스에서 중복되는 코드들이 많음.
- 각 서비스들이 Spring Security 를 사용하지 않아서 메소드 단위의 동일한 권한체크 로직이 필요함.
- Role(권한 Enum 클래스) 과 BaseEntity (MappedSuperClass) 의 경우 여러 서비스에서 공통적으로 사용하는 상황
→ Role 과 BaseEntity 의 수정이 일어날 경우 모든 서비스에서 수정이 필요함.
- Audit 관련 클래스와 권한 관련 공통 기능들을 ****깃 서브모듈로 분리하여 설계
- 각 서비스는 해당 서브모듈을 import 하여 사용
-
중복 코드 감소
- 공통 기능을 서브모듈로 분리함으로써, 여러 서비스에서 동일한 기능을 중복 구현하지 않아도 됨
- 이를 통해 코드의 재사용성을 높이고 개발 효율성을 향상시킴
-
유지보수성 향상
- 공통 로직을 중앙에서 관리함으로써, 변경 사항이 발생할 경우 각 서비스의 코드 수정 없이 서브모듈만 업데이트하면 됨
- 이를 통해 유지보수 시간을 절약하고 일관된 품질을 유지할 수 있음
-
확장성과 일관성 확보
- 모든 서비스가 동일한 공통 로직을 공유하도록 설계하여, 기능 확장 시 서브모듈에서 한 번만 수정하면 모든 서비스에 반영.
- 이는 MSA 프로젝트에서 일관성을 유지하는 데 중요한 역할을 함
-
모듈화된 설계
- 프로젝트 구조를 모듈화함으로써 각 서비스의 독립성을 유지하며, 필요한 공통 기능은 깃 서브모듈로 손쉽게 가져올 수 있도록 구현.
- 새로운 프로젝트에서도 동일한 서브모듈을 바로 활용 가능.
- CI 중 submodule 을 가져오지 못하는 문제
- gradle build 시에 코드에는 있지만 submodule을 포함하여 빌드를 하지 못하는 문제 발생
→ 해결 : 코드 체크아웃 시에 submodule 가져오는 옵션 넣어줌.
# 코드 체크아웃
- name: Check out the repository and update submodules
uses: actions/checkout@v3
with:
submodules: true # 이 옵션은 submodule을 자동으로 가져옵니다.