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

[Spring Batch] 스프링 배치와 구성

by heekng 2022. 5. 18.
반응형

스프링 배치와 구성

모든 프로그램에는 Batch가 거의 필수적인 요소이다.
따라서 Spring에서 제공하는 Spring Batch를 학습하게 되었다.

스프링 배치가 탄생한 이유

  • 스프링 배치는 자바기반 표준 배치 기술의 부재에서 시작되었다.
  • 배치 처리에서 요구하는 재사용 가능한 자바 기반 배치 아키텍처 표준의 필요성이 대두되면서 만들어졌다.

배치 핵심 패턴

배치의 핵심적인 패턴은 Read, Process, Write로 구성되어 있다.

  • Read: 데이터베이스, 파일, 큐에서 다량의 데이터를 조회한다.
  • Process: 특정 방법으로 데이터를 가공한다.
  • Write: 데이터를 수정된 양식으로 다시 저장한다.

배치 시나리오

  • 배치 프로세스를 주기적으로 커밋
  • 동시 다발적인 Job의 배치 처리, 대용량 병렬 처리
  • 실패 후 수동 또는 스케줄링에 의한 재시작
  • 의존관계가 있는 step 여러 개를 순차적으로 처리
  • 조건적 Flow 구성을 통한 체계적이고 유연한 배치 모델 구성
  • 반복, 재시도, Skip 처리

아키텍처

Application

  • 스프링 배치 프레임워크를 통해 개발자가 만든 모든 배치 Job과 커스텀 코드를 포함한다.
  • 개발자는 업무로직의 구현에만 집중할 수 있고, 공통적인 기반 기술은 프레임워크가 담당하게 한다.

Batch Core

  • Job을 실행, 모니터링, 관리하는 API로 구성되어 있다.
  • JobLauncher, Job, Step, Flow 등이 속해있다.

Batch Infrastructure

  • Application, Core 모두 공통 Infrastructure 위에서 빌드한다.
  • Job 실행의 흐름과 처리를 위한 틀을 제공한다.
  • Reader, Processor Writer, Skip, Retry 등이 속한다.

프로젝트 구성

  • @EnableBatchProcessing: 스프링 배치가 작동하기 위해 선언해야 하는 어노테이션
    • 총 4개의 설정 클래스를 실행시키며 스프링 배치의 모든 초기화 및 실행 구성이 이루어진다.
    • 스프링 부트 배치의 자동 설정 클래스가 실행됨으로써 빈으로 등록된 모든 Job을 검색해서 초기화와 동시에 Job을 수행하도록 구성된다.

스프링 배치 초기화 설정 클래스

BatchAutoConfiguration

  • 스프링 배치가 초기화 될 때 자동으로 실행되는 설정 클래스이다.
  • Job을 수행하는 JobLauncherApplicationRunner 빈을 생성한다.

SimpleBatchConfiguration

  • JobBuilderFactoryStepBuilderFactory 생성
  • 스프링 배치의 주요 구성 요소 생성
    • 프록시 객체로 생성된다.

BatchConfigurerConfiguration

  • BasicBatchConfigurer
    • SimpleBatchConfiguration에서 생성한 프록시 객체의 실제 대상 객체를 생성하는 설정 클래스
    • 빈으로 의존성 주입 받아서 주요 객첻들을 참조해서 사용할 수 있다.
  • JpaBatchConfigurer
    • JPA 관련 객체를 생성하는 설정 클래스
  • 사용자 정의 BatchConfigurer 인터페이스를 구현하여 사용할 수 있다.

스프링 배치 시작

스프링 배치는 Job 구동 -> Step 실행 -> Tasklet 실행의 순서로 작동한다.

  1. @Configuration 선언
    • 하나의 배치 Job을 정의하고 빈을 설정한다.
  2. JobBuilderFactory
    • Job을 생성하는 빌더 펙토리
  3. StepBuilderFactory
    • Step을 생성하는 빌더 팩토리
  4. Job
    • JobBuilderFactory로 생성된 Job
    • 일, 일감을 표현한다.
  5. Step
    • JobbuilderFactory로 생성된 Step
    • Job(일)에서 수행할 일의 항목, 단계를 표현한다.
  6. Tasklet
    • Step 안에서 단일 테스크로 수행되는 로직 구현
    • Step 안에서 진행되는 작업의 내용을 표현한다.
반응형