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 파이프라인에 적용 시 전체 빌드 시간 감소 효과 확보
- 참고: 지연 초기화는 로컬 테스트 시만 권장, 배포 환경 적용 시 선택적 적용 권장