TL;DR — submit 한 모듈만 고쳐도 서버 전체가 재빌드·재배포되던 단일 모듈 구조를, 책임 단위 5개 Gradle 멀티 모듈로 분리하고 CI에 paths-filter를 붙여 변경된 모듈만 배포하도록 바꿨다. 목표는 빌드 속도가 아니라 배포 범위(blast radius) 축소.

배경

문제 (증상)

원인 분석

해결

1) Gradle 멀티 모듈 분리 (common·gateway·auth·course·submit)settings.gradle

['common', 'gateway', 'auth', 'course', 'submit'].each { name ->
    include name
    project(":${name}").projectDir = new File("modules/${name}")
}

2) CI 선택 배포deploy-server.yml

- uses: dorny/paths-filter@v3
  id: filter
  with:
    filters: |
      common:  ['modules/common/**', 'build.gradle', 'settings.gradle']
      gateway: ['modules/gateway/**']
      auth:    ['modules/auth/**']
      course:  ['modules/course/**']
      submit:  ['modules/submit/**']