스프링 배치란?
- 배치 프로세싱은 일괄처리라는 뜻을 가지고 있으며, 일괄처리의 의미는 일련의 작업을 정해진 로직으로 수행하는 것입니다.
- 스프링 배치는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 기능을 제공합니다.
스프링 배치가 필요한 상황
- 대용량의 비지니스 데이터를 복잡한 작업으로 처리해야하는 경우
- 특정한 시점에 스케줄러를 통해 자동화된 작업이 필요한 경우
- 의존 관계에 있는 step 여러 개를 순차적으로 처리해야하는 경우
스프링 배치의 핵심 패턴
- Read (DB, 파일, 큐에서 다량의 데이터 조회)
- Process (데이터 가공)
- Write (데이터를 수정 된 양식으로 다시 저장)
스프링 배치의 아키텍처
1. Application
- Spring batch 프레임워크를 통해 개발자가 만든 모든 배치 job과 커스텀 코드를 포함
- 개발자는 업무 로직의 구현에만 집중하고, 공통적인 기반 기술은 프레임워크가 담당하게 함
-> 개발자는 비즈니스 로직에만 집중할 수 있어 효율적인 작업이 가능함
2. Batch Core
- job을 실행, 모니터링, 관리하는 api로 이루어져 있음
- JobLauncher, Job Step, Flow등이 속함
3. Batch Infrastructure
- Application, Batch Core 모두 Batch Infrastructure 위에서 빌드함
- Job 실행의 흐름과 처리를 위한 틀을 제공함
- Reader, Processor, Writer, Skip, Retry등이 속함
- Batch Core에서 정의한 Job, Step, Flow의 설정으로 Job을 실행시키고, 각 Step 별로 데이터를 어떻게 처리할지 배치 처리와 실행에 관련된 클래스들이 속함
스프링 배치의 구조
1. Job
- 배치의 기본 단위
- JobBuilderFactory를 통해 구현된다
- jobBuilderFactory.get("Job의 이름")에 Job의 이름을 부여한다.
@Bean
public Job helloJob() {
return this.jobBuilderFactory.get("helloJob") // Job을 생성
.start(helloStep()) // start API에 step을 인자로 정의해줌
.build(); // Job의 구현체에 Job 객체가 생성됨
}
2. Step
- Job을 구성하는 항목, 단계
- StepBuilderFactory를 통해 구현된다.
@Bean
public Step helloStep() {
return stepBuilderFactory.get("helloStep") // step을 생성
.tasklet((contribution, chunkContext) -> {
System.out.println("Hello Spring Batch");
return RepeatStatus.FINISHED;
}))
.build();
}
3. Tasklet
- Step 안에서 수행 되는 하나의 task에 대한 비즈니스 로직의 구현을 담당한다.
- Step안에서 tasklet이 호출된다.
'Spring boot > Spring batch' 카테고리의 다른 글
Spring batch에서의 Step, Tasklet, Chunk (0) | 2023.03.21 |
---|---|
Spring batch에서의 Job (0) | 2023.03.21 |