본문 바로가기
프레임워크/Spring Boot

[spring batch] Batch란?

by 연어바케트 2022. 12. 28.
반응형

 

Spring Batch

Spring Batch provides reusable functions that are essential in processing large volumes of records, including logging/tracing, transaction management, job processing statistics, job restart, skip, and resource management. It also provides more advanced tec

spring.io

spring batch란?

 batch는 일괄처리를 뜻한다. Spring Batch는 Spring의 특성을 그대로 가져왔다. DI, AOP, 서비스 추상화 등 Spring FrameWork의 3대 요소 모두 사용할 수 있다. 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 기능을 제공한다. 또한 최적화 및 파티셔닝 기술을 통해 대용량 및 고성능 배치 작업을 가능하게 하는 고급 기술 서비스 및 기능을 제공한다.

배치 어플리케이션 조건

 - 대용량 데이터 : 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리를 할 수 있어야한다. 

 - 자동화 : 심각한 문제 해결을 제외하고는 사용자 개입없이 실행되어야 한다. 

 - 견고성 : 잘못된 데이터를 충돌/중단 없이 처리할 수 있어야 한다.

 - 신뢰성 : 무엇이 잘못되었는지 추적할 수 있어야한다.(로깅, 알림)

 - 성능 : 지정한 시간안에 처리를 완료하거나 동시에 실행되는 다른 어플리케이션을 방행하지 않도록 수행되어야한다.

spring batch용어 

job

  • 배치처리 과정을 하나의 단위로 만들어 놓은 객체. 배치처리 과정에 있어 전체 계층 최상단에 위치하고 있다.

jobInstance

  • Job의 실행 단위를 나타낸다. Job을 실행시키게 되면 하나의 JobInstance가 생성된다.

JobParameters

  • JobInstance 구별 외에도 JobInstance에 전달되는 매개 변수 역할을 한다.

JobExecution

  • JobExecution은 JobInstance의 실행 시도에 대한 객체이다. JobExcution는 JobInstance실행에 대한 상태, 시작시간, 종료시간, 생성시간 등의 정보를 담고 있다. 

Step

  • Step은 Job의 배치처리를 정의하고 순차적인 단계를 캡슐화한다. Job은 최소한 1개 이상의 Step을 가져야 하며 Job의 실제 일괄 처리를 제어하는 모든 정보가 들어있다. 

ExecutionContext

  • ExecutionContext란 job에서 데이터를 공유 할 수 있는 데이터 저장소이다. Spring Batch에서 제공하는 ExecutionContext는 JobExecutionContext, StepExecutionContext 2가지 종류가 있으나 이 2가지는 지정되는 범위가 다르다. JobExecutionContext의 경우 Commit 시점에서 저장되는 반면 StepExecutionContext는 실행 사이에 저장이 된다. ExecutionContext를 통해 Step간 Data공유가 가능하며 Job 실패시 ExecutionContext를 통한 마지막 실행 값을 재구성할 수 있다. 

JobRepository

  • JobRepository는 위에서 말한 모든 배치 처리 정보를 담고 있는 매커니즘이다. Job이 실행되게 되면 JobRepository에 JobExecution과 StepExecution을 생성하게 되며 JobRepository에서 Execution정보들을 저장하고 조회하며 사용하게 된다. 

JobLauncher

  • JobLauncher는 Job과 JobParameters를 사용하여 Job을 실행하는 객체이다. 

ItemReader

  • ItemReader는 Step에서 Item을 읽어오는 인터페이스다.

IterWriter

  • ItemWriter는 처리된 Data를 Writer할 때 사용되는 인터페이스다. Writer는 기본적으로 Item을 Chunk 단위로 묶어 처리한다.

ItemProcessor

  • ItemProcessor는 Reader에서 읽어온 Item을 처리하는 역할을 담당한다. Processor는 배치를 처리하는데 필수 요소는 아니다.

Batch vs Quartz

  • Quartz는 스케줄러의 역할, Batch 와 같이 대용향 데이터 배치 처리에 대한 기능을 지원하지 않는다.

참고

https://khj93.tistory.com/entry/Spring-Batch란-이해하고-사용하기

https://jojoldu.tistory.com/324

반응형

댓글