목록 보기
커스텀 어노테이션과 리플렉션으로 구현한 Spring Boot 웜업 로직 최적화
백엔드

커스텀 어노테이션과 리플렉션으로 구현한 Spring Boot 웜업 로직 최적화

올리브영
올리브영
2024년 10월 30일

두줄요약

Spring Boot 시작 시 발생하는 콜드 스타트 지연을 줄이기 위해 웜업 로직을 개선했습니다. 커스텀 어노테이션과 리플렉션, 비동기 실행으로 초기 응답 속도와 운영 효율을 높였습니다.

문제 상황

  • Spring Boot 시작 시 외부 리소스 첫 요청 지연과 콜드 스타트 문제
  • Redis, 외부 API, 데이터베이스 초기 연결과 풀 준비 지연
  • Health 상태가 실제 준비 전에도 UP으로 보이는 일관성 문제

원인 분석

  • 기존 WarmUpRunner의 수동 호출 방식으로 인한 중복과 유지보수 부담
  • 웜업 작업 순차 실행에 따른 시작 시간 증가와 병목
  • 서비스 추가마다 웜업 코드 개별 수정이 필요한 확장성 한계

해결 방법

  • @WarmUp 커스텀 어노테이션으로 웜업 대상 메서드 자동 지정
  • 리플렉션으로 Spring 빈의 웜업 메서드 탐색 후 비동기 병렬 실행
  • CoroutineScope, ExecutorService, SupervisorJob으로 작업 분리와 자원 관리

성능/운영 포인트

  • Redis, 외부 API, DB 초기 연결과 초기 데이터 로딩 사전 수행
  • 환경별 스레드 풀 크기 관리와 실패 기록, 제한 시간 제어
  • DataDog 모니터링과 슬랙 알림으로 웜업 결과 추적

다음 읽기

#Spring Boot 주제를 이어서 읽기

올리브영은 왜 선물하기를 개편했을까? Part - 1

올리브영 선물하기관은 DB 의존과 배치 지연으로 성능과 신뢰성 문제가 있었습니다. 전시 전략 통합과 AOP·리플렉션 기반 개선으로 빠르고 정확한 서비스로 개편했습니다.

올리브영
올리브영
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...