본문 바로가기
Framework/Spring-Batch

(1) Spring Batch 란?

by 조훙 2022. 11. 11.

Spring Batch의 특징

  • 트랜잭션(Transaction) 관리
  • Chunk 기반 관리
  • 선언적 I/O
  • 시작/종료/재시작 인터페이스 제공

Spring Batch Architecture

Spring Batch Architecture

Application

  • 스프링 배치 프레임워크를 통해 개발자가 만든 모든 배치 Job 과 커스텀 코드
  • 개발자는 업무 로직 구현만 집중

Batch Core

  • Job 실행, 모니터링, 관리 API 로 구성
  • JobLauncher, Job, Step, Flow 등 구성

Batch Infrastructure

  • Application, Core 모두 공통 Infrastructure 위에서 빌드
  • Job 실행 흐르모가 처리를 위한 틀을 제공
  • Reader, Processor Writer, Skip, Retry 등이 속한다.

 

Job Structure

Batch Job 구조

JOB

  • 배치 계층 구조에서 가장 상위에 있는 개념으로 하나의 배치 작업을 의미
  • Job Configuration을 통해서 생성되는 객체 단위로써 배치 작업을 어떻게 구성하고 실행 할지를 기술 또는 명세해 놓은 객체
  • Job은 여러개의 Step을 포함하는 컨테니어

Step

  • Job을 구성하는 독립적인 하나의 단계
  • 실제 배치 처리를 정의하고 컨트롤 하는데 필요한 모든 정보를 가진 객체
  • Step 구현체
    • TaskletStep: 가장 기본이 되는 클래스로 Tasklet 타입의 구현체를 제어
    • PartitionStep: 멀티 쓰레드 방식으로 Step을 여러개로 분리 실행
    • JobStep: Step 내에서 외부 Job을 실행 할 수 있는 클래스
    • FlowStep: Step 내에서 Flow 를 실행 할 수 있는 클래스

☞ Step의 실행 단위는 크게 2가지로 구분됨

Tasket

  • Step 내부에서 실제 데이터를 Handling 하는 데이터 로직
  • Tasklet은 실제 수행 방식이 2가지로 나눠짐
  • chunk:
    • 하나의 큰 덩어리를 n개씩 나눠서 실행하는 의미로, 대량 데이터 처리에 적합한 구조
    • ETL(Extract, Transform, Load) 단계에 맞게 데이터를 처리 할 수있는 구조
      • ItemReader : 데이터를 읽기를 수행하는 인터페이스
      • ItemProcessor : 비즈니스 로직에 맞게 데이터를 수행 하기 위한 인터페이스
      • ItemWriter : ItemProcessor를 통해 생성된 데이터를 저장하는 인터페이스
  • Task:
    • ItemReader / ItemWriter 등을 단순화해서 데이터 처리는 하는 방식
    • Tasklet 구현체 기반으로 단순화한 배치에 사용 적합

 

Spring Batch Structure

 

 

Tier

i) Run Tier

  • Application / Batch 관련 설정 및 수행 시작과 관련된 계층
  • 스케쥴에 관련된 시간 설정 등을 관리하는 계층

ii) Job Tier

  • Batch Process의 전체 실행 담당
  • Batch 단계를 순차적으로 실행하여 모든 단계가 올바른 상태인지 적절한 정책이 시행 되도록 함
  • Job Launcher를 통해 Job이 돈다.
  • Job Launcher 및 Job이 실행 될 때 JobExecution이 JobRepository에 저장 및 조회

iii) Application Tier

  • 프로그램을 실행하는 데 필요한 구성 요소 포함
  • 요구된 배치의 기능을 처리하고 Tasklet 실행에 대한 정책 시행
  • 여기서, Step이 실행 중에 JobRepository에 StepExecution이 저장 및 조회

iv) Data Tier

  • DB, Data File 등의 DataSource와 연결 제공

색상 박스 구분

i) 노란색

  • 스케쥴러 또는 DB와 같은 외부 Application
  • Spring Batch와 별도로 고려되어야 한다는 점이 중요

ii) 주황색

  • Application Service
  • 대부분의 Service는 Spring Batch에서 제공
  • 원하는 구조가 있으면 따로 수정할 수 있음

iii) 초록색

  • 개발자가 구성해야 하는 파트
  • 일정한 주기대로 작업이 시작되도록 설정
  • 작업을 실행하는 방법 등

 

Reference

 

Spring Batch Introduction

Many applications within the enterprise domain require bulk processing to perform business operations in mission critical environments. These business operations include: Automated, complex processing of large volumes of information that is most efficientl

docs.spring.io

 

[스프링/Spring] Batch 구조와 구성 요소

스프링 배치 프레임워크 구조와 프레임워크를 구성하는 요소들에 대해서 소개합니다.

deeplify.dev

 

2. Spring Batch 가이드 - Batch Job 실행해보기

이번 시간에는 간단한 Spring Batch Job을 생성 & 실행하면서 전반적인 내용을 공부해보겠습니다. 작업한 모든 코드는 Github에 있으니 참고하시면 됩니다. 2-1. Spring Batch 프로젝트 생성하기 기본적인

jojoldu.tistory.com

 

'Framework > Spring-Batch' 카테고리의 다른 글

(6) Spring Batch Step  (0) 2022.11.16
(5) Spring Batch Job  (0) 2022.11.16
(4) Spring Batch 의존성 설정  (0) 2022.11.16
(3) Spring-Batch Schema  (0) 2022.11.12
(2) Spring Batch Configuration  (0) 2022.11.12