본문 바로가기
Spring boot/Spring batch

Spring batch의 기본 구성

by eunnnn 2023. 3. 21.

스프링 배치란?

  • 배치 프로세싱은 일괄처리라는 뜻을 가지고 있으며, 일괄처리의 의미는 일련의 작업을 정해진 로직으로 수행하는 것입니다.
  • 스프링 배치는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 기능을 제공합니다.

 

스프링 배치가 필요한 상황

  • 대용량의 비지니스 데이터를 복잡한 작업으로 처리해야하는 경우
  • 특정한 시점에 스케줄러를 통해 자동화된 작업이 필요한 경우
  • 의존 관계에 있는 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