본문 바로가기
Spring/batch

spring-batch 개념 정리

by 무대포 개발자 2020. 10. 17.
728x90
반응형

spring-batch 개념 정리

  1. Job

    • 전체 배치 처리 과정을 추상화하는 의미.
    • 파일을 읽고 쓰는 배치 작업이 있다면 이것의 전체 과정을 Job 이라 칭하는 것이지.
  2. JobInstance

    • 잡 실행의 개념
    • JobID + JobParameters 로 구성. (JobID 는 Job 의 고유키)
    • JobID + JobParameters 가 동일하면, 동일한 JobInstance 로 실행
  3. JobParameters

    • JobParameters 는 배치 Job 을 시작하는데 사용하는 파라미터의 집합
    • 이 파라미터를 통해 배치 내부 프로그램의 아규먼트에 사용
    • JobInstance = Job + JobParameters
  4. 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 을 가져와 재실행.
  5. Step

    • 배치 작업을 구성하는 개념. 하나의 잡은 여러 개의 스텝으로 구성
    • 실제 배치 처리 과정을 정의하고, 제어하는데 필요한 모든 정보 포함.
    • Step 처리 방식에 Tasklet, ChunkedOriented 방식이 있음.
  6. StepExecution

    • Step 을 실행하는 한 번의 시도
    • 한 번 실패한 JobInstance 를 다시 실행할 때 새로운 StepExecution 이 실행
    • Status, startTime, endTime, exitStatus, executionContext (실행 사이에 영속화할 데이터), commitCount, readCount 등 가지고 있음.
  1. ExecutionContext

    • StepExecution 이나 JobExecution 범위에서 영속화 상태를 저장하기 위해 영속화되고, 제어되는 키/값 쌍의 콜렉션.
    • 재시작하면, 마지막 실행의 ExecutionContext 정보를 데이터베이스에서 읽어와서 재시작 처리 함.
    • 한 가지 알아두면 좋을 점은 JobExecution 의 ExecutionContext 는 잡 전체에서 사용할 수 있고, StepExecution 의 ExecutionContext 는 스텝 내에서만 사용 가능
  2. JobRepository

    • JobRepository 는 위에서 언급한 모든 스테레오 타입에서 사용하는 영속화 메커니즘이다.
      • 즉, DB JobExecution, StepExecution 등을 DB 로 저장할 때 이 JobRepository 를 통한다.
    • 실행 동안에 StepExecution, JobExecution 은 이 저장소에 건내져서 영속화 된다.
  3. JobLauncher

    • 주어진 JobParameters 로 Job 을 실행시키는 단순한 인터페이스
  4. JobLocator

    • Job 을 찾아주는 인터페이스 (xml 을 찾음)
  5. ItemReader

    • 데이터를 읽어들이는 추상화 인터페이스
  6. ItemProcessor

    • 비즈니스 처리 과정을 구현하는 인터페이스
  7. ItemWriter

    • 데이터를 쓰는 추상화 인터페이스

댓글