커스텀 어노테이션과 리플렉션을 활용한 Spring Boot 웜업 로직 최적화
·2024.10.30 20:00
커스텀 어노테이션과 리플렉션을 활용해 Spring Boot의 초기 요청 지연 문제를 해결하고 웜업 로직을 자동화했다.
Spring Boot 애플리케이션은 시작 직후 외부 리소스(DB, Redis 등)에 대한 첫 요청 시 **콜드 스타트(Cold Start)**로 인한 지연이 발생할 수 있습니다. 이는 사용자 경험 저하와 타임아웃의 원인이 됩니다.
기존의 WarmUpRunner 방식은 각 서비스를 수동으로 호출해야 하여 코드 중복이 많고, 동기 방식으로 동작하여 애플리케이션 시작 시간이 길어지는 한계가 있었습니다.
이를 개선하기 위해 @WarmUp 어노테이션과 **AppStartupWarmupRunner**를 도입했습니다. 이 방식은 다음과 같은 특징을 가집니다.
- 자동화 및 확장성: 리플렉션을 통해
@WarmUp이 붙은 메서드를 자동으로 탐색하여 실행하므로, 새로운 서비스 추가 시 별도의 수정이 필요 없습니다. - 비동기 병렬 처리: Kotlin Coroutine을 활용하여 여러 웜업 작업을 비동기적으로 동시에 수행함으로써 초기화 시간을 단축했습니다.
- 유연한 설정: 어노테이션에
WarmUpType과 파라미터를 지정하여 다양한 시나리오와 조건에 맞는 웜업을 수행할 수 있습니다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.