Java 21 Virtual Thread Configuration on spring-boot 3.2.x

이 글을 읽기 전에 아래 글을 먼저 읽기를 추천드립니다. 먼저 Virtual Thread를 적용하기 전에 제약에 대한 이해가 필요합니다. ISSUE: Pinning inside synchronized spring-boot 3.2.x 에서 드디어 JEP-444 Virtual Thread 기능을 활성화 시킬 수 있습니다.Virtual Thread 와 관련된 자세한 내용을 알고 싶으시면, Oracle 공식 문서를 확인하는 것을 추천합니다.(기존 Thread는 Platform Thread라고 부르네요.) 결론 부터 말씀드리면 서비스가 … Read more

spring-boot 3.1 to 3.2 업그레이드 마이그레이션

fix-spring-boot

spring-boot 3.1.10 -> 3.2.5 로 마이그레이션 하는 시나리오입니다. 보시다시피 spring-boot 3.1.x는 오픈소스 EoL이 2024-05-18입니다.(글을 발행한 시점이 2024-04-20 이어서 오늘 날짜로 빗금이 있네요) spring-boot 오픈소스 버전 EoL 주기가 짧기 때문에 미리 미리 버전업을 해야할 것 같습니다. 만약 취약점이 발견되는 경우 치명적인 문제가 생길 수 있기 때문입니다. 공식 업그레이드 가이드 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2-Release-Notes#upgrading-from-spring-boot-31 다들 공식 업그레이드 가이드를 정독하시길 바랍니다. … Read more

jib with spring-boot-devtools

Contents of fat jar

Problem Production 환경 스케줄링된 배치(k8s CronJob)가 실패되는 현상이 발생하였습니다. 여기에 back-off 정책까지 활성화되어 있어서 같은 배치가 여러번 실행까지 되었습니다.(k8s에서 .spec.backOffLimit 가 0 이상이면 재시도하게 됩니다.) 그런데 중요한 것은 이 배치 애플리케이션은 성공했다는 것입니다. 성공했는데 왜 exit 코드가 0이 아닌 값이 나왔는지 의문이었습니다. spring-boot application exit code 아래는 배치 관련 코드 중 일부입니다. 보시다시피 배치의 시작, … Read more