변경점

Monolith 디렉터리 구조

모노레포 멀티 모듈 디렉터리 구조
- 각 모듈마다 build.gradle, dockerfile, jenkinsfile이 존재하여 각 도메인마다 적용
모노레포 멀티모듈 장점
공통 코드/규칙을 한 번 만들고 전 서비스에 재사용
- 공통 모듈(common: logging, exception, response, security util, validation, feign 공통 설정 등)을 만들어 중복 제거
- 코드 스타일(checkstyle), 테스트 규칙, Gradle convention plugin 등을 일관되게 적용
- 결과: 서비스 늘어날수록 유지보수 비용이 기하급수로 줄어듦
의존성/버전 관리가 쉬움(Gradle에서 특히 강함)
- Spring Boot, Cloud, Jackson, Lombok, Querydsl 등 버전을 루트에서 통제
- “어떤 서비스는 3.2, 어떤 서비스는 3.3” 같은 버전 파편화 방지
- 보안 패치/업그레이드가 일괄 적용되기 쉬움
변경 전파가 빠르고, 리팩토링이 쉬움
- 공통 DTO, 이벤트 스키마, 계약(interfaces) 바꾸면 같은 PR에서 영향 범위를 한 번에 수정
- IDE 탐색/리팩토링(Find Usages, Rename)이 저장소 경계를 안 넘어서 생산성이 좋아짐
CI/CD 최적화가 쉬움 (특히 “변경된 모듈만 빌드”)
- 변경 감지 기반으로
:services:order만 테스트/빌드 가능
- 캐시(Gradle build cache), 병렬 빌드, 공통 파이프라인 템플릿을 쓰기 쉬움
- 결과: 서비스가 많아질수록 파이프라인 운영이 표준화되고 빨라짐