스케줄러 vs 배치

송지윤·4일 전

Spring Boot

목록 보기
76/76

1. 스케줄러 vs 배치의 차이(역할 분담)

  • 스케줄러 (Scheduler) : "언제 (When)" 실행할지를 결정하는 알람 시계
    - 예 : 매일 새벽 2시에 이 프로그램을 실행해 Spring의 @Scheduled, Quartz 등
  • 배치 (Batch) : "무엇을 (What) 어떻게 (How)" 처리할지를 담당하는 작업 내용
    - 예 : 100만개의 파일을 읽어서, 존재 확인하고, 이동시키고, DB에 결과를 저장해

2. 왜 스케줄러만 안 쓰고 배치 프레임워크를 따로 쓸까?

단순한 작업은 스케줄러만으로 충분.
하지만 파일 이동 및 DB 기록처럼 복잡하고 중요한 작업은 스케줄러만으로는 부족한 점이 많음

단순 스케줄러 @Scheduled

대용량 처리

한 번에 다 읽다가 메모리가 부족할 수 있음

실패 후 시작

처음부터 다시 시작

모니터링

누가 성공했는지 로그를 일일이 봐야 함

에러 나면 전체가 멈춤

스프링 배치 Spring Batch

대용량 처리

Chunk(덩어리) 단위로 나눠서 안정적으로 처리

실패한 지점부터 이어서 시작 가능 (Checkpoint)

모니터링

실행 횟수, 성공/실패 여부를 DB에 자동 기록

안전 장치

특정 에러는 Skip(건너 뛰기) 하거나 Retry (재시도) 가능

3. 실제 운영 모델

실제 업무 환경에서는 두 개를 같이 사용
1. 스케줄러가 새벽 2시가 되면 배치 프로그램을 깨움
2. 배치 프로그램이 돌아가면서 수만 건의 파일 이동 업무를 수행
3. 배치 프로그램이 작업 결과를 DB(Meta Table)에 남김
4. 관리자는 나중에 배치가 남긴 기록을 보고 어제 작업이 잘 됐구나 하고 확인

0개의 댓글