Spring Batch는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 기능을 제공하는 오픈소스 프레임워크다.
Restartability가 핵심으로, 예컨대 100GB 작업 중 55% 지점에서 중단시, 다음에 다시 55%부터 이어서 작업을 진행할 수 있다.
Batch 어플리케이션은 다음 조건을 만족해야 한다.
Spring Batch에서의 Job은 여러가지 Step의 모음(약 2~10개)으로 되어 있으며, Job은 순차적으로 Step을 수행한다. Step은 Tasklet 처리 방식과 Chunk 지향 처리 방식을 지원하고 있다.
Tasklet : 임의의 step 실행시 chunk를 하나의 작업(단계 내 단일 태스크)으로 처리하는 방식.
step에서 chunk() 대신 tasklet()을 사용한다.
대부분의 경우 chunk로 처리하나, 가볍고 몇줄 되지 않는 작업이거나 writer가 불필요한 경우,
tasklet으로 간단히 처리하기도 한다.
Chunk : 읽기 - 가공하기 - 쓰기의 묶음(Chunk-processing)
ItemReader<T> - ItemProcessor<I, O> - ItemWriter<T>
T < - > I O < - > T