Supercharge your JVM performance with Project Leyden and Spring Boot by Moritz Halbritter, Ana Maria
- 프로젝트 레이든(Project Leyden)은 자바 애플리케이션의 시작 및 워밍업 시간을 단축하여 JVM 성능을 향상시키는 것을 목표로 합니다. 🚀
- 이는 빌드 시점 또는 런타임에 작업을 미리 수행하거나 나중에 지연시키는 '계산 시프트'를 통해 이루어집니다. ⏳
- 현재는 동적 관찰을 수집하는 '트레이닝 실행' 방식에 중점을 두며, 정적 분석은 향후 목표입니다. 🧠
- JDK 24에서는 3단계 워크플로우(트레이닝 실행 → 어셈블리 → 배포)를 통해 시작 시간 개선을 보였습니다. 📈
- JDK 25에서는 이전 실행의 메서드 실행 프로파일을 활용하여 워밍업 시간을 자동으로 개선하고, 워크플로우를 2단계로 간소화하여 더욱 향상된 성능을 제공합니다. 🔥
- 레이든은 자바 플랫폼 사양과 완벽하게 호환되므로 기존 코드 변경 없이 성능 향상을 누릴 수 있습니다. ✅
- 스프링 부트(Spring Boot) 애플리케이션에 AOT 캐시를 적용하려면 JDK 25 이상이 필요하며, 동일한 JVM 사용, JAR 목록 형태의 클래스패스, 타임스탬프 보존 등의 제약 사항이 있습니다. 🛠️
- 스프링 부트의 커스텀 클래스 로더가 레이든과 호환되지 않아,
jar-mode tools extract 명령어를 사용하여 우버 JAR를 압축 해제해야 합니다. 📦
- 우버 JAR 압축 해제만으로도 커스텀 클래스 로더를 사용하지 않아 시작 시간이 크게 단축됩니다 (예: Pet Clinic 3.3초 → 2.4초). ⚡
- 최적의 AOT 캐시 성능을 위해서는 프로덕션 워크로드를 반영하는 통합 테스트나 실제 트래픽 미러링을 통한 트레이닝 실행이 중요합니다. 🎯