Java/spring

Spring batch - 1. 기본 개념

배치 프로그램

 

   배치란, 데이터를 실시간으로 처리하지 않고 요청들을 한꺼번에 모아서 처리하는 방식이다. 이러한 배치 프로그램은 아래와 같은 특징들을 가지고 있다.

 

  • 대량의 데이터를 처리한다.
  • 사용자의 개입 없이 자동으로 동작한다.
  • 유효하지 않은 데이터가 입력되었을 때도 동작을 중단하지 않아야 한다.
  • 프로그램이 실행되는 시간을 정할 수 있다.
  • 요청들을 일괄적으로 처리한다.

그렇다면, 이러한 배치 프로그램은 왜 써야하는걸까?

 

예를 들어, 매일 한 번씩 전날의 데이터를 집계한다고 해보자. 하루에 한번밖에 사용되지 않는 기능을 위한 API를 만드는 것은 낭비가 될 수 있고, 실수로 이 API를 하루에 두 번 이상 실행할 수도 있다. 또한 데이터의 양이 매우 많을 것이므로 집계가 중간에 실패할 경우 다시 처음부터 집계를 시작해야한다.

 

이러한 문제점들을 해결하기 위해 배치 프로그램이 등장하게 되었으며, Spring에서는 Spring Batch라는 프레임워크를 지원한다.

 

Spring Batch

 

Spring Batch는 일반적으로 3개의 시나리오인 읽기 - 처리 - 쓰기 로 구성된다.

   1. 읽기(read) : DB에서 특정 데이터를 읽어온다.

   2. 처리(process) : 원하는 방식으로 데이터를 처리한다.

   3. 쓰기(write) : 처리가 끝난 데이터를 다시 DB에 기록한다.

 

Spring Batch Structure

 

Spring Batch 기본 구조

 

Spring Batch는 다양한 구성요소들로 이루어져 있다.

이름 역할
Job 배치 프로그램을 위한 일련의 프로세스를 요약하는 단일 실행 단위, 여러 개의 Step으로 구성된다.
전체 배치 처리의 최상단 계층에 위치해있다.
Step Job을 구성하는 단위이다. 여기에는 tasklet이나 reader/processor/writer 묶음이 들어간다.
JobLauncher Job을 구동시키기 위한 인터페이스
ItemReader
ItemProcessor
ItemWriter
각각 읽기/처리/쓰기 단계를 담당하는 인터페이스이며, Spring Batch가 기본적인 구현체를 제공한다. 이들은 Step과 1:1 관계를 가진다.

ItemReader와 ItemWriter는 DB에서 데이터를 읽고 쓰는 역할을 하며, 각각 자바 객체를 DB 레코드로 변환하거나, DB 레코드를 다시 자바 객체로 변환하는 역할을 한다.

ItemProcessor는 데이터 유효성 검사와 함께 비즈니스 로직을 수행하는 역할을 한다.
JobRepository Job과 step을 관리하는 역할을 수행한다. 관리 정보는 DB에 저장된다.

 

 

 

 

참고 사이트

 1. jojoldu.tistory.com/325?category=902551

 2. cheese10yun.github.io/spring-batch-basic

 3. terasoluna-batch.github.io/guideline/5.0.0.RELEASE/en/Ch02_SpringBatchArchitecture.html

'Java > spring' 카테고리의 다른 글

4/19 정리  (0) 2021.04.19
Spring 계층 구조  (0) 2021.02.07
@Controller vs @RestController  (0) 2021.01.26