Batch Scheduler 내재화 — OnQuartz 개발 여정
백엔드
Batch Scheduler 내재화 — OnQuartz 개발 여정
두줄요약
외부 Batch Scheduler를 Quartz 기반으로 내재화한 과정과 최종 구조를 공유했습니다. 배포·롤백·중복 실행·무한 RUNNING 같은 운영 예외를 줄이기 위한 시행착오도 함께 정리했습니다.
문제 상황
- 외부 Batch Scheduler 솔루션의 운영 비용 부담과 커스터마이징 한계
- 장애 원인 파악과 대응의 어려움, 별도 UI 관리의 불편함
- MSA 환경에서 기존 흐름을 유지하며 무중단에 가깝게 전환할 필요성
원인 분석
- 외부 솔루션 의존으로 인한 비용과 운영 복잡도 누적
- 배포/롤백과 리더 교체 시점에서 스케줄러 중복 동작 가능성
- 비동기 실행, 중복 실행, 무한 RUNNING 등 운영 예외 케이스 존재
해결 방법
- Quartz Scheduler 도입으로 클러스터링과 HA 기반의 내재화 구성
- DB Lock과 리더 선출로 BLUE-GREEN 배포 환경에서 활성 인스턴스만 스케줄링
- 공통 라이브러리와 Kafka, TTL, Executor/TaskDecorator 적용으로 추적성과 안정성 강화
성능/운영 포인트
- MISFIRE 정책과 clusterCheckinInterval, misfireThreshold 조정으로 지연 실행 제어
- RUNNING 상태 작업 SKIP, alive 메시지 기반 상태 감지, FAIL 처리로 무한 대기 방지
- 대시보드 구축으로 Batch 관리와 모니터링 시각화
