Spring Batch

유요한·2023년 10월 19일

Spring Batch

목록 보기
1/2
post-thumbnail

Spring Batch란?

대량의 데이터를 처리하는 작업을 의미하며 이를 자동화하여 시스템의 부하를 줄이고 효율적인 데이터 처리를 가능하게 하는 프레임워크를 의미합니다.

💡 배치 프로그램(Batch Program)이란?

  • 대량의 데이터를 처리하는 작업을 자동화하는 프로그램을 의미합니다.
  • 이러한 작업들은 보통 스케줄러를 이용하여 특정시간에 수행하도록 구성합니다.
  • 예를 들어 매일 밤 12시에 일괄적으로 데이터를 업데이트하는 작업이 배치 프로그램의 예시입니다.

스케줄러(Scheduler)

  • 일정한 시간 간격으로 바녹적으로 수행되거나 특정 시간에 수행되도록 예약해 놓은 작업을 자동으로 실행해주는 시스템입니다.
  • 스케줄러를 이용하면 주기적으로 반복되는 일일 업무나 특정 시간에 실행해야 하는 작업등을 자동으로 처리할 수 있습니다.

배치 프로그램과 스케줄러 차이

  • 비슷한 기능을 가지고 있지만 동일한 것은 아닙니다. 실행방법과 목적에 큰 차이가 있습니다.
  • 배치 프로그램은 일괄 처리를 위한 프로그램이며 ‘정해진 시간에 실행되지 않고 사용자의 명령이 있을 때 실행’합니다.
  • 스케줄러는 ‘정해진 시간에 자동으로 실행’되는 프로그램이며 ‘주기적으로 실행되는 작업’을 설정할 수 있습니다.

배치 작업이 필요한 예시

  • 이메일 쿠폰 발송
  • 가맹점 정산
  • 거래 명세서 생성
  • 추천 시스템 데이터 작업

스프링 배치로 작업이 필요한 이유

  • 풍부한 기능
  • 일관성된 코드
  • 기존 서비스가 스프링 프레임워크로 되어 있는 경우 호환 가능

배치 핵심 패턴

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

배치 시나리오

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

시작

@SpringBootApplication
// 스프링 배치가 작동하기 위해 선언해야 하는 어노테이션
@EnableBatchProcessing
public class Batch1Application {

    public static void main(String[] args) {
        SpringApplication.run(Batch1Application.class, args);
    }

}
  • 총 4개의 설정 클래스를 실횅시키며 스프링 배치의 모든 초기화 및 실행 구성이 이루어 진다.
  • 스프링 부트 배치의 자동 설정 클래스가 실행됨으로 빈으로 등록된 모든 Job을 검색해서 초기화와 동시에 Job을 수행하도록 구성됨
  1. BatchAutoConfiguration
  • 스프링 배치가 초기화 될 때 자동으로 실행되는 설정 클래스
  • Job을 수행하는 JobLanucherApplicationRunner 빈을 생성
  1. SimpleBatchConfiguration
  • JobBuilderFactory와 StepBuilderFatory 생성
  • 스프링 배치의 주요 구성 요소 생성 - 프록시 객체로 생성됨
profile
발전하기 위한 공부

0개의 댓글