728x90
반응형
spring-batch 개념 정리
Job
- 전체 배치 처리 과정을 추상화하는 의미.
- 파일을 읽고 쓰는 배치 작업이 있다면 이것의 전체 과정을 Job 이라 칭하는 것이지.
JobInstance
- 잡 실행의 개념
- JobID + JobParameters 로 구성. (JobID 는 Job 의 고유키)
- JobID + JobParameters 가 동일하면, 동일한 JobInstance 로 실행
JobParameters
- JobParameters 는 배치 Job 을 시작하는데 사용하는 파라미터의 집합
- 이 파라미터를 통해 배치 내부 프로그램의 아규먼트에 사용
- JobInstance = Job + JobParameters
JobExecution
- 잡 실행의 개념이지만 JobInstance 와 다른점은 JobExecution 은 한 번 시도되는 Job 실행을 의미
- 예를 들면, 2020-01-01 의 JobParameters 갖는 Job 이 처음 실행에서 실패했다 가정.
- 동일한 파라미터로 다시 실행하려는 경우에 새로운 JobExecution 이 생성되지만, 여전히 JobInstance 는 동일.
- 실패했다면 실패한 지점부터으 ExecutionContext 정보를 가져와서 시작할테고.
- 배치 작업이 성공적으로 수행됐으면 동일한 배치 작업을 수행할 수 없다고 에러가 나겠지.
- Job, status, startTime, endTime, exitStatus 등의 정보가 있음.
- 테이블 단위로 세부적으로 보면
- 2020-01-01 에 대한 EndOfDay 잡을 수행했는데 실패 함.
- 각 테이블에 데이터가 쌓이겠지. JOB_INSTANCE 에는 JOB_INSTANCE_ID, JOB_NAME 에 데이터가 쌓이고
- JOB_EXECUTION 에는 JOB 에 대한 실행 정보가 쌓이겠지. 실패, 시작, 종료 시간, instance_id 등
- 2020-01-01 에 실패한 것을 다시 실행하면 동일한 JobInstance 로 이전 JobExecution 을 가져와 재실행.
Step
- 배치 작업을 구성하는 개념. 하나의 잡은 여러 개의 스텝으로 구성
- 실제 배치 처리 과정을 정의하고, 제어하는데 필요한 모든 정보 포함.
- Step 처리 방식에 Tasklet, ChunkedOriented 방식이 있음.
StepExecution
- Step 을 실행하는 한 번의 시도
- 한 번 실패한 JobInstance 를 다시 실행할 때 새로운 StepExecution 이 실행
- Status, startTime, endTime, exitStatus, executionContext (실행 사이에 영속화할 데이터), commitCount, readCount 등 가지고 있음.
ExecutionContext
- StepExecution 이나 JobExecution 범위에서 영속화 상태를 저장하기 위해 영속화되고, 제어되는 키/값 쌍의 콜렉션.
- 재시작하면, 마지막 실행의 ExecutionContext 정보를 데이터베이스에서 읽어와서 재시작 처리 함.
- 한 가지 알아두면 좋을 점은 JobExecution 의 ExecutionContext 는 잡 전체에서 사용할 수 있고, StepExecution 의 ExecutionContext 는 스텝 내에서만 사용 가능
JobRepository
- JobRepository 는 위에서 언급한 모든 스테레오 타입에서 사용하는 영속화 메커니즘이다.
- 즉, DB JobExecution, StepExecution 등을 DB 로 저장할 때 이 JobRepository 를 통한다.
- 실행 동안에 StepExecution, JobExecution 은 이 저장소에 건내져서 영속화 된다.
- JobRepository 는 위에서 언급한 모든 스테레오 타입에서 사용하는 영속화 메커니즘이다.
JobLauncher
- 주어진 JobParameters 로 Job 을 실행시키는 단순한 인터페이스
JobLocator
- Job 을 찾아주는 인터페이스 (xml 을 찾음)
ItemReader
- 데이터를 읽어들이는 추상화 인터페이스
ItemProcessor
- 비즈니스 처리 과정을 구현하는 인터페이스
ItemWriter
- 데이터를 쓰는 추상화 인터페이스
'Spring > batch' 카테고리의 다른 글
spring batch jpa 환경에서 ID 생성전략에 따른 bulk insert 하는법 (0) | 2021.06.24 |
---|---|
spring-batch 통합 테스트 정리 (0) | 2021.06.12 |
spring-batch RunIdIncrementer 정리 (0) | 2020.09.01 |
Spring Batch ORA-08177 (0) | 2020.08.18 |
spring boot, spring batch 정리 - 1편 환경 구성 (spring boot, spring batch, gradle, multi project) (0) | 2020.07.11 |
댓글