Spring batch 기본 개념

이민재·2022년 10월 15일
0

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을 하게 됨
profile
초보 개발자

0개의 댓글