백엔드
커스텀 어노테이션과 리플렉션으로 구현한 Spring Boot 웜업 로직 최적화
두줄요약
Spring Boot 시작 시 발생하는 콜드 스타트 지연을 줄이기 위해 웜업 로직을 개선했습니다. 커스텀 어노테이션과 리플렉션, 비동기 실행으로 초기 응답 속도와 운영 효율을 높였습니다.
문제 상황
- Spring Boot 시작 시 외부 리소스 첫 요청 지연과 콜드 스타트 문제
- Redis, 외부 API, 데이터베이스 초기 연결과 풀 준비 지연
- Health 상태가 실제 준비 전에도 UP으로 보이는 일관성 문제
원인 분석
- 기존 WarmUpRunner의 수동 호출 방식으로 인한 중복과 유지보수 부담
- 웜업 작업 순차 실행에 따른 시작 시간 증가와 병목
- 서비스 추가마다 웜업 코드 개별 수정이 필요한 확장성 한계
해결 방법
- @WarmUp 커스텀 어노테이션으로 웜업 대상 메서드 자동 지정
- 리플렉션으로 Spring 빈의 웜업 메서드 탐색 후 비동기 병렬 실행
- CoroutineScope, ExecutorService, SupervisorJob으로 작업 분리와 자원 관리
성능/운영 포인트
- Redis, 외부 API, DB 초기 연결과 초기 데이터 로딩 사전 수행
- 환경별 스레드 풀 크기 관리와 실패 기록, 제한 시간 제어
- DataDog 모니터링과 슬랙 알림으로 웜업 결과 추적
