저번 포스팅에서 스프링 배치를 구성하기 위해 필요한 준비들에 대해 알아보았다.
이번 포스팅에서는 스프링 배치에서 사용하는 주요 도메인들에 대해 알아볼 것이다.
Job
배치 계층 주소에서 가장 상위에 있는 개념으로 하나의 배치작업 자체를 의미한다.
JobParameter
Job을 실행할 때 함께 포함되어 사용되는 파라미터를 가진 객체이다.
JobInstance
Job 이 실행될 때 생성되는 Job 의 논리적 실행 단위 객체이다.
만약 처음 실행하는 Job + JobParameter 일 경우 새로운 JobInstance 를 생성한다.
이미 실행한 적 있는 Job + JobParameter 일 경우 기존에 생성된 JobInstance를 리턴한다
다음은 “일별 정산”을 하는 Job 에 대해 “2021.01.01” 이라는 JobParameter 를 전달하여 실행한 경우를 도식화한 것이다.
다음날 동일 Job에 대해 “2022.01.02” 라는 JobParameter 로 실행하면 다음과 같이 BATCH_JOB_INSTANCE 테이블에 저장될 것이다.
JobExecution
JobInstance 에 대한 한번의 시도를 의미하는 객체이다.
시작시간, 종료시간, 상태, 종료상태의 속성을 가진다.
JobExecution 의 실행 상태가 COMPLETED 가 될 때까지 하나의 JobInstance 내에서 여러 번의 시도가 생길 수 있다.
다음은 위 예제에서 살펴본 일별 정산 Job 에 대해 어떻게 JobExecution 이 생성되는지 도식화한 것이다.
Step
Job을 구성하는 독립적인 하나의 단계이다.
Step의 종류로 JobStep, TaskletStep, FlowStep, PartitionStep 이 있다.
StepExecution
Step 에 대한 한번의 시도를 의미하는 객체이다.
시작시간, 종료시간, 상태 등의 속성을 가진다.
Step 이 실패할 경우 StepExecution 은 FAILED 상태가 되고 JobExecution 또한 FAILED 상태가 된다.
다음은 이러한 상황을 잘 보여준다.
JobRepository
배치 작업 중 발생하는 정보를 저장하는 저장소 객체이다.
배치 작업의 수행과 관련된 모든 메타데이터를 저장한다.
JobLauncher
Job 을 실행시키는 역할을 한다.
Job 과 JobParameter 을 인자로 받아 요청된 배치 작업을 수행한 후 최종 client 에게 JobExecution 을 반환한다.
Job 을 실행하는 방식으로 동기적 실행과 비동기적 실행이 있다.
비동기적 실행의 경우 실행 즉시 응답값을 반환하는 차이점이 있다.
지금까지 알아본 배치 도메인 말고도 다양한 도메인들이 있지만 주요 도메인들만 알아 보았다.
다음 포스팅에서는 실제 실행 과정에 대해 알아 보자.