Spring Scheduler → Quartz → Spring Batch 이 세 가지는 모두 백엔드에서 **정기 작업(스케줄링)**을 처리하기 위한 기술들이지만, 기능 범위와 사용 목적이 다릅니다.
아래에 차이점과 추천 사용 시점을 순서대로 정리해드릴게요:
✅ 1. Spring Scheduler
- 가장 간단한 스케줄링 기능.
@Scheduled 어노테이션만 붙이면 특정 시간마다 작업 실행 가능.
💡 특징
- 설정이 매우 간단 (
@EnableScheduling + @Scheduled)
- 초 단위 반복, cron 표현식 지원
- 단일 서버 환경에서 동작
- 스프링 컨텍스트 안에서 동작하므로 관리가 쉽다
🔧 사용 예시
- 매일 자정에 로그인 기록 삭제
- 매 10분마다 API 동기화
🚫 한계
- 분산 환경에서는 멀티 서버 간 충돌 발생 가능
- 실패한 작업 재시도, 트랜잭션 관리 어려움
✅ 2. Quartz Scheduler
- Spring Scheduler보다 고급 기능을 제공하는 스케줄링 프레임워크