Spring batch
spring batch 일괄처리를 위한 오픈 소스 프레임워크
기능
- 로깅/추적
- 트랜잭션 관리
- 작업 처리 통계
- 작업 재시작
- 건너뛰기
- 리소스 관리
대용량 레코드 처리에 필수적인 재사용 가능한 기능을 제공
- Run Tier
- Application의 scheduling, 실행을 담당
- 스프링배치는 따로 Scheduling의 기능은 제공하지 않음
- Quartz나 Cron을 이용하도록 권고
- Job Tier
- 전체적인 Job의 수행을 책임
- Job 내의 각 Step을 정책에 따라 순차적으로 수행
- Application Tier
- Job을 수행하는데 필요한 componenet
- Data Tier
- Database, File 등 물리적 데이터소스
- JobLauncher
- 배치 Job을 실행시키는 역할
- Job과 Parameter를 받아서 실행 JobExecution을 반환
public interface JobLauncher {
public JobExecution run(Job job, JobParameters jobParameters) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException;
}
- Job
- 실행시킬 작업을 의미
- 논리적인 Job 실행 개념
- Job conriguration과 대응되는 단위
public interface Job {
String getName();
boolean isRestartable();
void execute(JobExecution execution);
}
-
JobParameter
- Batch Job을 시작하는데 사용하는 파라미터의 집합으로 Job이 실행되는 동안에 Job을 식별하거나 Job에서 참조하는 데이터로 사용
-
JobInstance
- 논리적인 Job 실행
- JobInstance = Job + JobParameter
-
JobExecution
- 단 한 번 시도되는 Job 실행을 의미하는 기술적인 개념
- 시작 시간, 종료 시간, 상태(시작됨, 완료, 실패), 종료 상태의 속성을 가짐
-
JobRepository
- 수행되는 Job에 대한 정보를 담고 있는 저장소
- 어떠한 Job이 언제 수행되었고, 언제 끝났으며, 몇 번이 실행되었고 실행에 대한 결과가 어떤지 등의 Batch 수행과 관련된 모든 meta data가 저장되어 있음
-
Step
- Batch Job을 구성하는 독립적인 하나의 단계
- Job은 하나 이상의 step으로 구성
- 실제 배치 처리 과정을 정의하고, 제어하는데 필요한 모든 정보를 포함
- Step의 내용은 전적으로 개발자의 선택에 따라 구성됨
-
Step Execution
- 하나의 Step을 실행하는 한 번의 시도
- 시작 시간, 종료 시간, 상태, 종료 상태, commitCount, itemCount의 속성을 가짐
-
Item
- 처리할 데이터의 가장 작은 구성 요소
- 예) 파일의 한 줄, DB의 한 Row, XML의 특정 element
-
ItemReader
- Step안에서 File 또는 DB등에서 Item을 읽어 들임
- 더 읽어올 Item이 없을 때는 read() 메소드에서 null 값을 반환하며 그 전까지는 순차적인 값을 리턴
-
ItemWriter
- Step 안에서 File 또는 DB 등으로 Item을 저장
-
Item Processor
- ItemReader에서 읽어 들인 Item에 대하여 필요한 로직처리 작업을 수행
-
Chunk
- 하나의 Transaction 안에서 처리할 Item의 덩어리
- chunk size가 10이라면 하나의 transaction 안에서 10개의 item에 대해 처리를 하고 commit을 하게 됨