Skip to content

feat: springboot bootstrap 설정#33

Merged
kangeunchan merged 9 commits intodevelopfrom
feature/31-springboot-bootstrap-설정
Mar 3, 2026

Hidden character warning

The head ref may contain hidden characters: "feature/31-springboot-bootstrap-\uc124\uc815"
Merged

feat: springboot bootstrap 설정#33
kangeunchan merged 9 commits intodevelopfrom
feature/31-springboot-bootstrap-설정

Conversation

@kangeunchan
Copy link
Copy Markdown
Member

@kangeunchan kangeunchan commented Mar 3, 2026

Summary

  • Spring Boot 기반 멀티모듈의 실행 구조를 정리하여, bootstrap 모듈만 애플리케이션 진입점 역할을 하도록 변경했습니다.
  • 각 시스템(admission, application, configuration, document, gateway, identity, notification, schedule)에서
    • bootstrap은 실행 바이너리
    • domain/application/adapter-in/adapter-out은 라이브러리
      로 역할을 분리했습니다.
  • 공통 런타임 설정(profile, logging, actuator, graceful shutdown)을 각 *-bootstrap/src/main/resources/application.yaml로 집중시켰습니다.
  • 루트 Bazel alias를 실제 bootstrap 타깃으로 수정해 실행 진입점을 일관화했습니다.

Related Issue

Scope

  • In scope:
    • Kotlin 8개 시스템 모듈의 BUILD.bazel, deps.bzl, main/test 코드 구조 정리
    • bootstrap -> (adapter-in, adapter-out, application, domain) 의존성 방향 정렬
    • bootstrap 공통 설정 파일 추가
    • 루트 BUILD.bazel alias 정리
  • Out of scope:
    • 비즈니스 로직 구현/변경
    • API 스펙/엔드포인트 동작 변경
    • Go 서비스(analytics, evaluation, observability) 구조 변경

Implementation

  • 실행 진입점 단일화:
    • @SpringBootApplication + main*-bootstrap에만 유지
    • 비-bootstrap 모듈의 실행 코드는 제거하고 모듈 클래스로 단순화
  • 빌드 타깃 분리:
    • *-bootstrap: kt_jvm_binary
    • 나머지 모듈: kt_jvm_library
  • 의존성 정리:
    • Spring 관련 의존성은 bootstrap 중심
    • 비-bootstrap 모듈은 경량 의존성으로 축소
  • 커밋 전략:
    • 시스템별로 분리 커밋(총 9개) + infra alias 커밋으로 변경 이력 추적성을 높임

Testing

  • Unit tests

  • Integration tests

  • Manual verification

  • 실행한 검증:

    • bazel build //:admission //:application //:configuration //:document //:gateway //:identity //:notification //:schedule
    • bazel build //systems/analytics/cmd/server:server //systems/evaluation/cmd/server:server //systems/observability/cmd/server:server

Deployment Notes

  • Feature flag:
    • 없음
  • Migration required:
    • 애플리케이션 데이터/스키마 마이그레이션 없음
    • 로컬/CI Bazel JVM 빌드 환경에서 Java 버전 해석(asdf) 설정 필요
  • Rollout considerations:
    • CI에서 Java 버전을 명시(예: ASDF_JAVA_VERSION 또는 고정 JDK)하면 재현성 향상

Checklist

  • Matches product/tech requirements
  • Backward compatibility considered
  • Docs updated if applicable

@kangeunchan kangeunchan self-assigned this Mar 3, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 3, 2026

Important

Review skipped

Too many files!

This PR contains 161 files, which is 11 over the limit of 150.

📥 Commits

Reviewing files that changed from the base of the PR and between dad2ad8 and 48e5fd9.

📒 Files selected for processing (161)
  • BUILD.bazel
  • systems/admission/admission-adapter-in/BUILD.bazel
  • systems/admission/admission-adapter-in/deps.bzl
  • systems/admission/admission-adapter-in/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/admission/admission-adapter-in/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/admission/admission-adapter-out/BUILD.bazel
  • systems/admission/admission-adapter-out/deps.bzl
  • systems/admission/admission-adapter-out/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/admission/admission-adapter-out/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/admission/admission-application/BUILD.bazel
  • systems/admission/admission-application/deps.bzl
  • systems/admission/admission-application/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/admission/admission-application/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/admission/admission-bootstrap/BUILD.bazel
  • systems/admission/admission-bootstrap/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/admission/admission-bootstrap/src/main/resources/application.yaml
  • systems/admission/admission-bootstrap/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/admission/admission-domain/BUILD.bazel
  • systems/admission/admission-domain/deps.bzl
  • systems/admission/admission-domain/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/admission/admission-domain/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/application/application-adapter-in/BUILD.bazel
  • systems/application/application-adapter-in/deps.bzl
  • systems/application/application-adapter-in/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/application/application-adapter-in/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/application/application-adapter-out/BUILD.bazel
  • systems/application/application-adapter-out/deps.bzl
  • systems/application/application-adapter-out/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/application/application-adapter-out/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/application/application-application/BUILD.bazel
  • systems/application/application-application/deps.bzl
  • systems/application/application-application/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/application/application-application/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/application/application-bootstrap/BUILD.bazel
  • systems/application/application-bootstrap/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/application/application-bootstrap/src/main/resources/application.yaml
  • systems/application/application-bootstrap/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/application/application-domain/BUILD.bazel
  • systems/application/application-domain/deps.bzl
  • systems/application/application-domain/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/application/application-domain/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/configuration/configuration-adapter-in/BUILD.bazel
  • systems/configuration/configuration-adapter-in/deps.bzl
  • systems/configuration/configuration-adapter-in/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/configuration/configuration-adapter-in/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/configuration/configuration-adapter-out/BUILD.bazel
  • systems/configuration/configuration-adapter-out/deps.bzl
  • systems/configuration/configuration-adapter-out/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/configuration/configuration-adapter-out/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/configuration/configuration-application/BUILD.bazel
  • systems/configuration/configuration-application/deps.bzl
  • systems/configuration/configuration-application/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/configuration/configuration-application/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/configuration/configuration-bootstrap/BUILD.bazel
  • systems/configuration/configuration-bootstrap/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/configuration/configuration-bootstrap/src/main/resources/application.yaml
  • systems/configuration/configuration-bootstrap/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/configuration/configuration-domain/BUILD.bazel
  • systems/configuration/configuration-domain/deps.bzl
  • systems/configuration/configuration-domain/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/configuration/configuration-domain/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/document/document-adapter-in/BUILD.bazel
  • systems/document/document-adapter-in/deps.bzl
  • systems/document/document-adapter-in/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/document/document-adapter-in/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/document/document-adapter-out/BUILD.bazel
  • systems/document/document-adapter-out/deps.bzl
  • systems/document/document-adapter-out/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/document/document-adapter-out/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/document/document-application/BUILD.bazel
  • systems/document/document-application/deps.bzl
  • systems/document/document-application/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/document/document-application/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/document/document-bootstrap/BUILD.bazel
  • systems/document/document-bootstrap/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/document/document-bootstrap/src/main/resources/application.yaml
  • systems/document/document-bootstrap/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/document/document-domain/BUILD.bazel
  • systems/document/document-domain/deps.bzl
  • systems/document/document-domain/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/document/document-domain/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/gateway/gateway-adapter-in/BUILD.bazel
  • systems/gateway/gateway-adapter-in/deps.bzl
  • systems/gateway/gateway-adapter-in/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/gateway/gateway-adapter-in/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/gateway/gateway-adapter-out/BUILD.bazel
  • systems/gateway/gateway-adapter-out/deps.bzl
  • systems/gateway/gateway-adapter-out/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/gateway/gateway-adapter-out/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/gateway/gateway-application/BUILD.bazel
  • systems/gateway/gateway-application/deps.bzl
  • systems/gateway/gateway-application/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/gateway/gateway-application/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/gateway/gateway-bootstrap/BUILD.bazel
  • systems/gateway/gateway-bootstrap/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/gateway/gateway-bootstrap/src/main/resources/application.yaml
  • systems/gateway/gateway-bootstrap/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/gateway/gateway-domain/BUILD.bazel
  • systems/gateway/gateway-domain/deps.bzl
  • systems/gateway/gateway-domain/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/gateway/gateway-domain/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/identity/identity-adapter-in/BUILD.bazel
  • systems/identity/identity-adapter-in/deps.bzl
  • systems/identity/identity-adapter-in/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/identity/identity-adapter-in/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/identity/identity-adapter-out/BUILD.bazel
  • systems/identity/identity-adapter-out/deps.bzl
  • systems/identity/identity-adapter-out/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/identity/identity-adapter-out/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/identity/identity-application/BUILD.bazel
  • systems/identity/identity-application/deps.bzl
  • systems/identity/identity-application/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/identity/identity-application/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/identity/identity-bootstrap/BUILD.bazel
  • systems/identity/identity-bootstrap/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/identity/identity-bootstrap/src/main/resources/application.yaml
  • systems/identity/identity-bootstrap/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/identity/identity-domain/BUILD.bazel
  • systems/identity/identity-domain/deps.bzl
  • systems/identity/identity-domain/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/identity/identity-domain/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/notification/notification-adapter-in/BUILD.bazel
  • systems/notification/notification-adapter-in/deps.bzl
  • systems/notification/notification-adapter-in/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/notification/notification-adapter-in/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/notification/notification-adapter-out/BUILD.bazel
  • systems/notification/notification-adapter-out/deps.bzl
  • systems/notification/notification-adapter-out/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/notification/notification-adapter-out/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/notification/notification-application/BUILD.bazel
  • systems/notification/notification-application/deps.bzl
  • systems/notification/notification-application/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/notification/notification-application/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/notification/notification-bootstrap/BUILD.bazel
  • systems/notification/notification-bootstrap/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/notification/notification-bootstrap/src/main/resources/application.yaml
  • systems/notification/notification-bootstrap/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/notification/notification-domain/BUILD.bazel
  • systems/notification/notification-domain/deps.bzl
  • systems/notification/notification-domain/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/notification/notification-domain/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/schedule/schedule-adapter-in/BUILD.bazel
  • systems/schedule/schedule-adapter-in/deps.bzl
  • systems/schedule/schedule-adapter-in/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/schedule/schedule-adapter-in/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/schedule/schedule-adapter-out/BUILD.bazel
  • systems/schedule/schedule-adapter-out/deps.bzl
  • systems/schedule/schedule-adapter-out/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/schedule/schedule-adapter-out/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/schedule/schedule-application/BUILD.bazel
  • systems/schedule/schedule-application/deps.bzl
  • systems/schedule/schedule-application/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/schedule/schedule-application/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/schedule/schedule-bootstrap/BUILD.bazel
  • systems/schedule/schedule-bootstrap/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/schedule/schedule-bootstrap/src/main/resources/application.yaml
  • systems/schedule/schedule-bootstrap/src/test/kotlin/hs/kr/entrydsm/TestMain.kt
  • systems/schedule/schedule-domain/BUILD.bazel
  • systems/schedule/schedule-domain/deps.bzl
  • systems/schedule/schedule-domain/src/main/kotlin/hs/kr/entrydsm/ExampleApplication.kt
  • systems/schedule/schedule-domain/src/test/kotlin/hs/kr/entrydsm/TestMain.kt

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/31-springboot-bootstrap-설정

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@kangeunchan
Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 3, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@kangeunchan kangeunchan merged commit d100891 into develop Mar 3, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

springboot용 bootstrap module 설정

3 participants