Optimize Spring Boot Load and Build Time with Gradle & Lazy

Spring Boot 로딩 시간 및 빌드 시간 단축하기

분야

프로그래밍/소프트웨어 개발

대상자

Spring Boot 애플리케이션 개발자, CI/CD 파이프라인 최적화에 관심 있는 개발자

난이도: 중급 ~ 고급 (Gradle 설정 및 지연 초기화 적용 기술 이해 필요)

핵심 요약

  • Spring Boot 애플리케이션 로딩 시간 47% 단축, 빌드 시간 91% 단축* **
  • spring.main.lazy-initialization=true 설정으로 불필요한 빈 생성 지연
  • Gradle 병렬 처리빌드 캐시 활용으로 빌드 시간 감소
  • JVM 메모리 조정 필요 시 org.gradle.jvmargs 설정 필수

섹션별 세부 요약

1. 불필요한 컴포넌트 스캔 범위 축소 및 지연 초기화 설정

  • 지연 초기화 적용 시 애플리케이션 로딩 시간 47% 단축 (Mac: 53초 → 22초, Windows: 90초 → 48초)
  • JFR(Java Flight Recorder)로 메서드 호출 횟수 감소 확인 (절반 이상 감소)
  • 지연 초기화 단점: 순환 참조, 메모리 부족 오류 등 잠재적 문제 발생 가능성
  • 선택적 적용 권장: @Lazy 어노테이션으로 특정 빈에만 적용 가능

2. Gradle 병렬 처리 및 빌드 캐시 활용

  • org.gradle.parallel=true 적용 시 병렬 처리로 빌드 시간 극대화
  • org.gradle.caching=true로 이전 빌드 결과 재사용 (공통 모듈 재사용 시 효과 크음)
  • 캐시 삭제 방법: ~/.gradle/ 디렉터리 직접 삭제 필요 (.gradlew clean 시 캐시 유지)
  • JVM 메모리 조정: org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m 설정 권장

3. 성능 개선 전략 및 실무 적용 사례

  • 기본 빌드 시간: 3분 16초 → 병렬 + 캐시 적용 후 17초로 단축
  • 빌드 태스크 분석: ./gradlew build --scan으로 메타데이터 분석 및 태스크 최적화 가능
  • CI/CD 적용: 로컬 및 CI 환경 모두 빌드 시간 단축 효과 확보
  • 메모리 부족 대응: JVM 파라미터 조정으로 리소스 관리 필수

결론

  • 지연 초기화 + Gradle 병렬/캐시 설정으로 로딩 시간 47%, 빌드 시간 91% 단축 가능
  • 실무 팁:
  • gradle.properties 파일에 org.gradle.daemon=true, org.gradle.parallel=true, org.gradle.caching=true 설정
  • 메모리 부족 시 org.gradle.jvmargs로 JVM 파라미터 조정
  • CI/CD 파이프라인에 적용 시 전체 빌드 시간 감소 효과 확보
  • 참고: 지연 초기화는 로컬 테스트 시만 권장, 배포 환경 적용 시 선택적 적용 권장