Spring Batch

Spring Batch는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 기능을 제공합니다. 또한 최적화 및 파티셔닝 기술을 통해 대용량 및 고성능 배치 작업을 가능하게 하는 고급 기술 서비스 및 기능을 제공합니다.

Spring Batch에서 배치가 실패하여 작업 재시작을 하게 된다면 처음부터가 아닌 실패한 지점부터 실행을 하게 됩니다.

또한 중복 실행을 막기 위해 성공한 이력이 있는 Batch는 동일한 Parameters로 실행 시 Exception이 발생하게 됩니다.

Spring Batch vs Quartz? Scheduler?

Spring Batch는 Scheduler가 아니기에 비교 대상이 아닙니다.

배치는 스케쥴링, API, crontab 과 같은 주체로 실행되며 그 후 혼자서 돌고있는 애플리케이션.

쿼츠는 스케쥴링 프레임워크이기 때문에 대체제가 아니다.

Spring Batch는 Batch Job을 관리하지만 Job을 구동하거나 실행시키는 기능은 지원하고 있지 않습니다. Spring에서 Batch Job을 실행시키기 위해서는 Quartz, Scheduler, Jenkins등 전용 Scheduler를 사용하여야 합니다.

Untitled

배치는 대용량 데이터 처리가 절대적인 요구 사항

쿼츠는 단순 스케쥴링

스프링 배치에서는 모든 데이터를 메모리에 쌓지 않는 조회 방식이 기본 방식

CommitSize = chunkSize, 10000건 씩 끊어서 처리

jpaRepository.findAll() ← 방식으로 진행해서는 안됩니다.