본문 바로가기
Java & Kotlin/Spring Batch

[Spring Batch] 스프링 배치 도메인 - Job

by heekng 2022. 5. 28.
반응형

스프링 배치의 도메인 - Job

Job

  • Job이란? 스프링 배치의 하나의 배치를 뜻한다.
    • 예) API 서버의 접속 로그 데이터를 통계 서버로 옮기는 배치

- Job Configuration을 통해서 생성되는 객체 단위로, 배치를 어떻게 구성하고 실행할 것인지 전체적으로 설정하고 명세해 좋은 객체이다.

  • 배치 Job을 구성하기 위한 최상위 인터페이스이며, 스프링 배치가 기본 구현체(org.springframework.batch.core.Job)를 제공한다.
  • 여러 Step을 포함하고 있는 컨테이너로 반드시 한개 이상의 Step으로 구성해야 한다.

SimpleJob

  • 순차적으로 Step을 실행시키는 Job

FlowJob

  • 특정한 조건과 흐름에 따라 Step을 구성하여 실행시키는 Job
  • Flow 객체를 실행시켜서 작업을 진행한다.

JobInstance

  • Job이 실행될 때 생성되는 Job의 논리적 실행 단위 객체이며, 고유하게 식별 가능한 작업 실행을 나타낸다.
  • 하나의 Job의 설정과 구성은 동일하지만 Job이 실행되는 시점의 내용은 달라지기 때문에 Job의 실행을 구분해야한다. 때문에 JobInstance를 이용해 각 실행의 Job을 구분한다.
  • JobJobInstance1:M 관계이다.

JobInstance 생성과 실행

  • 처음 시작하는 Job + JobParameter일 경우 새로운 JobInstance를 생성한다.
  • 이전과 동일한 Job + JobParameter으로 실행 할 경우 이미 존재하는 JobInstance를 리턴한다.
    • 내부적으로 JobName + jobKey를 가지고 JobInstance 객체를 얻는다.

JobParameter

  • Job을 실행할 때 함께 포함되어 사용되는 파라미터를 가진 도메인 객체
  • 하나의 Job에 존재할 수 있는 여러개의 JobInstance를 구분하기 위한 용도이다.
  • JobParametersJobInstance1:1 관계이다.

JobParameter의 생성과 바인딩

  • 어플리케이션 실행 시 주입: java -jar Batch.jar [key]=[value]
  • 코드로 생성: JobParameterBuilder, DefaultJobParametersConverter 사용
  • SPEL 이용: @JobScope, @StepScope 선언 후 @Value("#{jobparameter[key]}") 사용
  • JOB_EXECUTION 테이블과 JOB_EXECUTION_PARAM 테이블은 1:M 관계이다.

JobExecution

  • JobInstance에 대한 한번의 시도를 의미하는 객체로서 Job 실행 중에 발생한 정보를 저장하고 있는 객체
  • 시작시간, 종료시간, 상태, 종료상태의 속성을 가진다.

JobInstance와의 관계

  • JobExecution은 FAILED 또는 COMPLETED 등의 Job의 실행 결과 상태를 가지고 있다.
  • JobExecution의 실행 상태 결과가 COMPLETED면 JobInstance 실행이 완료된 것으로 간주해서 재실행이 불가하다.
  • JobExecution의 실행 상태 결과가 FAILED 면 JobInstance 실행이 완료되지 않은 것으로 간주해서 재실행이 가능하다.
    • 동일한 JobParameter이더라도 재실행 가능
  • JobExecution의 실행 상태 결과가 COMPLETED가 될 때 까지 하나의 JobInstance 내에서 여러 번의 시도가 생길 수 있다.
반응형