1.스프링 배치 소개 및 프로젝트 구성

2022. 9. 27. 19:56BackEnd(Java)/Spring Batch

✅ 아래 내용들에 대해서 알아보자

- 스프링 배치 탄생 배경
- 배치 핵심 패턴
- 배치 시나리오
- 배치 프로젝트 구성
- 배치 초기화 설정 클래스

 

실무에서 Spring Batch를 사용할 일이 생겨서 스프링 배치 공부하려고 인프런에서 아래 강의를 듣게 되었습니다.

 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B0%B0%EC%B9%98/dashboard 

 

그래서 제가 다시 보기 위해 정리하려고 시리즈 글을 쓸려고 합니다. 😁😁(혹시나 Batch 공부하실 분들은 위 강의 추천합니다! )

 

 


스프링 배치 탄생 배경

- 자바 기반 표준 배치 기술 부재

   - 배치 처리에서 요구하는 재사용 가능한 자바 기반 배치 아키텍처 표준의 필요성 대두

 

- 스프링 배치는 SpringSource(햔재는 Pivotal)와 Accenture(경영 컨설팅 기업)의 합작품

 - Accenture : 배치 아키텍처를 구현하면서 쌓은 기술적인 경험과 노하우 제공(Spring에 소스 제공)

 - SpringSource : 깊이 있는 기술적 기반과 스프링의 프로그래밍 모델 제공

 

- Accentrue는 이전에 소유했던 배치 처리 아키텍처 프레임워크를 Spring Batch 프로젝트에 기증함

 

배치 핵심 패턴

- Read : db, file, que에서 대량 데이터 조회

- Process : 특정 방법으로 데이터 가공

- Write : 데이터를 수정된 양식으로 다시 저장

 

배치 시나리오

- 배치 프로세스를 주기적으로 커밋

- 동시 다발적인 job의 배치 처리, 대용량 병렬 처리

- 실패 후 수동 또는 스케줄링에 의한 재시작

- 의존관계가 있는 step 여러 개를 순차적으로 처리

- 조건적 Flow 구성을 통한 체계적이고 유영한 배치 모델 구성

- 반복, 재시도, Skip 처리

 

 

 

 

배치 프로젝트 구성

@EnableBatchProcessing

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

 

@EnableBatchProcessing

 

배치 초기화 설정 클래스

1. BatchAutoConfiguration

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

 

2. SimpleBatchConfiguration

  • JobBuilderFactory와 StepBuilerFactory 생성
  • 스프링 배치의 주요 구성 요소 생성 - Proxy객체로 생성됨

 

 

3. BatchConfigurerConfiguration

-  BasicBatchConfigurer

  • SimpleBatchConfiguration에서 생성한 프로식 객체의 실제 대상 객체를 생성하는 설정 클래스
  • 빈으로 의존성 주입 받아서 주요 객체들을 참조해서 사용할 수 있다

 

- JpaBatchConfigurer

  • JPA 관련 객체를 생성하는 설정 클래스

 

- 사용자 정의 BatchConfigurer 인터페이스를 구현하여 사용할 수 있음

 

 

 

 

 


이글은 인프런 정수원님의 ‘스프링 배치 - Spring Boot 기반으로 개발하는 Spring Batch’ 강의 내용을 바탕으로 정리 및 복습하기 위해 작성하였습니다.(링크)

반응형

'BackEnd(Java) > Spring Batch' 카테고리의 다른 글

3. Job  (0) 2023.02.14
배치 실행 시 잡파라미터 null 바인딩 현상  (0) 2023.02.08
2. 배치 메타 데이터 분석  (0) 2023.02.06