롯데ON, Batch Scheduler 내재화로 비용 절감 및 운영 효율 UP!

by DD
6개월 전
조회수 7

외부 Batch Scheduler 솔루션의 운영 비용 절감을 위해 내재화를 시작함

Quartz Scheduler를 기반으로, 공통 라이브러리BLUE-GREEN 배포 환경을 고려하여 시스템을 구축함

중복 실행 방지, 무한 RUNNING 등 다양한 예외 케이스를 해결하고, 안정적인 Batch 환경을 구축함

내재화 아키텍처 설계: 안정성과 효율성의 균형

내재화 과정에서 Quartz Scheduler를 활용하여 Batch 실행을 관리하고, 공통 라이브러리를 통해 각 MSA 프로젝트와 통합했다. 구체적으로 API 호출 방식을 통해 Batch 실행을 요청하고, Kafka를 활용하여 모니터링 및 결과 전송을 구현했다. 따라서 BLUE-GREEN 배포 환경에서도 안정적인 운영이 가능하도록 설계되었다.

중복 실행 및 무한 RUNNING 방지 전략

내재화 과정에서 중복 실행무한 RUNNING 문제를 해결하기 위해 다양한 기법을 도입했다. Queue 사이즈 제한TTL(Time To Live) 개념을 도입하여 중복 실행을 방지하고, afterJob 수행 보장을 통해 무한 RUNNING 문제를 해결했다. 반면, 이러한 개선은 Batch 작업의 안정성을 높이는 데 기여했다.

배포 환경 고려 사항: BLUE-GREEN 배포

BLUE-GREEN 배포 환경에서 Scheduler의 동작을 제어하기 위해 리더 선출 방식을 구현했다. DB Lock을 활용하여 리더 서버를 조회하고, 최신 Tag의 서버를 리더로 선출했다. 따라서 배포 후 기존 Pod와 신규 Pod가 공존하는 상황에서도 Scheduler의 일관성을 유지할 수 있었다. 결과적으로 서비스 안정성을 확보했다.

Batch Scheduler 내재화 — OnQuartz 개발 여정