반응형
스프링 배치와 구성
모든 프로그램에는 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
JobBuilderFactory
와StepBuilderFactory
생성- 스프링 배치의 주요 구성 요소 생성
- 프록시 객체로 생성된다.
BatchConfigurerConfiguration
BasicBatchConfigurer
SimpleBatchConfiguration
에서 생성한 프록시 객체의 실제 대상 객체를 생성하는 설정 클래스- 빈으로 의존성 주입 받아서 주요 객첻들을 참조해서 사용할 수 있다.
JpaBatchConfigurer
- JPA 관련 객체를 생성하는 설정 클래스
- 사용자 정의
BatchConfigurer
인터페이스를 구현하여 사용할 수 있다.
스프링 배치 시작
스프링 배치는 Job 구동
-> Step 실행
-> Tasklet 실행
의 순서로 작동한다.
@Configuration
선언- 하나의 배치
Job
을 정의하고 빈을 설정한다.
- 하나의 배치
JobBuilderFactory
Job
을 생성하는 빌더 펙토리
StepBuilderFactory
Step
을 생성하는 빌더 팩토리
Job
JobBuilderFactory
로 생성된Job
- 일, 일감을 표현한다.
Step
JobbuilderFactory
로 생성된Step
Job
(일)에서 수행할 일의 항목, 단계를 표현한다.
Tasklet
Step
안에서 단일 테스크로 수행되는 로직 구현Step
안에서 진행되는 작업의 내용을 표현한다.
반응형
'Java & Kotlin > Spring Batch' 카테고리의 다른 글
[Spring Batch] 스프링 배치 실행 - Flow (0) | 2022.05.28 |
---|---|
[Spring Batch] 스프링 배치 실행 - Step (0) | 2022.05.28 |
[Spring Batch] 스프링 배치 실행 - Job (0) | 2022.05.28 |
[Spring Batch] 스프링 배치 도메인 - Step, 나머지 (0) | 2022.05.28 |
[Spring Batch] 스프링 배치 도메인 - Job (0) | 2022.05.28 |
[Spring Batch] 스프링 배치의 DB 스키마 (0) | 2022.05.18 |