TL;DR
GraalVM(지랄VM)은 Java 어플리케이션을 미리 컴파일하여 바로 시작될 수 있게 합니다.
시작 시 워밍업이 필요하지 않으며, 더 적은 리소스를 사용합니다. 대신 빌드가 느립니다.
자세한 정보는
https://www.graalvm.org/latest/docs/getting-started/
시작시간 비교하기
Spring Batch를 사용하였습니다. (아주 간단한 Job을 실행하였습니다.)
2.474s -> 0.114s
예시 코드
https://github.com/GHGHGHKO/migration-v3-with-graal
프로젝트에 GraalVM 적용해보기
기본적으로 GraalVM은 SpringBoot 3.x.x 버전 이상에서만 실행됩니다.
SpringBoot 2.x.x 버전을 사용하고 있다면
Migration 문서를 참고하면 좋습니다!
사전 준비사항
Rancher Desktop(혹은 Docker Desktop)
SpringBoot 3 이상
GraalVM Native Support
적용하기
gradlew이 제공하는 bootBuildImage를 사용할겁니다.
./gradlew bootBuildImage --imageName=migration-v3-with-graal:0.3.1-SNAPSHOT
빌드가 완료되면 Container image를 실행합니다.
docker run -p 8080:8080 -e SPRING_BATCH_JOB_NAME=sampleTaskletJob migration-v3-with-graal:0.3.1-SNAPSHOT
속도를 확인해봅니다!
Without GraalVM
Started MigrationV3WithGraalApplication in 2.474 seconds (process running for 2.888)
With GraalVM
Started MigrationV3WithGraalApplication in 0.114 seconds (process running for 0.121)
출처
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide
https://www.graalvm.org/latest/docs/getting-started/
'SpringBoot' 카테고리의 다른 글
RequestParam(required = true) null exception 하는 법 (0) | 2022.10.05 |
---|---|
jib 배포, 코드 배포, 코드 컨테이너, 앱 컨테이너 만들기 (0) | 2022.07.15 |
String, StringBuilder, StringBuffer 사용법 및 차이 (0) | 2021.12.23 |
통신 중 실패했을 때 재시도하기 (@Retryable, @Recover) (0) | 2021.12.22 |
DB 통신 속도 증가 Cacheable CacheEvict redis 활용 (0) | 2021.12.21 |