-
spring BatchCS/Spring 2024. 9. 16. 02:13
spring batch 란?
- 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기 및 리소스 관리 등 대량의 레코드를 처리하는 데 필수적인 재사용 가능한 기능을 제공
- 최적화 및 파티셔닝 기법을 통해 고용량 및 고성능 배치 작업을 가능하게 하는 고급 기술 서비스 및 기능을 제공
- 단순한 배치 작업뿐만 아니라 복잡하고, 대용량의 배치 작업도 프레임워크를 활용하여 확장 가능한 방식으로 처리할 수 있어 댜랑의 정보를 효율적으로 처리할 수 있음
왜 사용하는걸까?
다양한 도메인 내의 많은 애플리케이션은 보통 비즈니스 운영을 수행하기 위해 대량의 데이터 처리가 필요
그래서 가볍고 포괄적이며 Spring Framework의 특성인 생산성, POJO 개발 방식, 일반적인 사용 편의성을 기반한 Spring Batch를 사용해서 데이터를 일괄적으로 처리
Batch vs Scheduler
많은 사람들이 배치가 스케줄링 프레임 워크라고 생각한다 하지만, 이 둘은 엄연히 다르다.
배치 -> 논리적 또는 물리적으로 관련된 일련의 데이터를 그룹화하여 일괄 처리하는 방법을 의미
스케줄러 -> 주어진 작업을 미리 정의된 시간에 실행할 수 있게 해주는 도구나 소프트웨어를 의미
- 대량의 데이터를 일괄적으로 처리할 뿐, 특정 주기마다 자동으로 돌아가는 스케줄링과는 관련이 없음
- Spring Batch는 스케줄러와 함께 사용할 수 있도록 설계되어 있을 뿐, 스케줄러 자체를 대체하는 것은 아님
- 작업 스케줄링 라이브러리인 Quartz, Tivoli, Control-M 등과 비교하는 것은 적절하지 못함
- 하지만!!!! 스케줄러없이는 자동화할 수 없다.
- 일괄처리를 일정 주기마다 실행시켜줄 스케줄러가 필요하다.
주요 용어

Job
-> 배치 처리의 기본 단위, 하나 이상의 Step으로 구성
-> 배치 프로그램의 실행 단위를 의미, 실행과 관리가 가능
Step
-> Job 내에서 개별 단위의 작업을 의미
-> 하나의 Step은 ItemReader, ItemWriter, ItemProcessor 등의 구성 요소로 이뤄짐
-> 각 Step은 트랜잭션 경계 내에서 실행되며, 성공 또는 실패 상태로 끝남
Job Instance
-> 특정한 Job이 특정한 파라미터로 실행된 인스턴스를 의미
-> 동일한 Job이 다른 파라미터로 실행될 경우 새로운 JobInstance가 생성됨
Job Execution
-> JobInstance의 한 번의 실행을 의미
-> 성공, 실패 등의 상태 정보를 기록, 각 실행마다 새로운 JobExecution이 생성됨
Step Execution
-> Step의 한 번의 실행을 의미
-> 성공, 실패 등의 상태를 포함하며, 여러 번 재시도될 수 있음
Item Reader
-> 데이터를 읽어오는 역할을 담당
-> 파일, DB, 메세지 큐 등 다양한 소스에서 데이터를 읽을 수 있음
Item Reader
-> 읽어온 데이터를 처리하는 역할
-> 데이터 변환, 필터링, 검증 등의 작업을 수행, 선택적으로 사용할 수 있음
Item Writer
-> 처리된 데이터를 저장하는 역할
-> 파일, DB, 메세지 큐 등에 데이터를 기록할 수 있음
Job Repository
-> Job을 실행하는 역할을 담당
-> Job, Step의 실행 상태와 결과를 추적하는 데 사용
Job Launcher
-> Job을 실행하는 역할을 담당
-> 외부에서 Job을 트리거하고, 실행과 동시에 관련된 JobExecution을 생성
Job Parameters
-> Job 실행 시 입력되는 파라미터
-> JobInstance를 구분하는 기준, 동일한 Job이 다른 파라미터로 실행되면 새로운 JobInstance가 생성됨
Chunk
-> 스프링 배치에서 데이터를 처리하는 단위
-> 한 번에 읽어오는 데이터의 묶음, 설정된 Chunk 단위로 ItemReader, Processor, Writer가 실행
Transaction
-> 각 Step이 트랜잭션 경계 내에서 실행되며, 모든 처리가 완료되면 커밋되고 실패 시 롤백
-> 스프링 배치에서는 Chunk 단위로 트랜잭션이 관리
Spring Batch Architecture

Application
- 가장 상위 레이어로, 개발자가 배치 작업을 정의하는 곳
- 개발자는 Job, Step, ItemReader, ItemWriter 등의 컴포넌트를 이용해 배치 프로세스를 설계
- 스프링 배치는 각각의 배치 Job이 어떻게 실행되고 데이터를 어떻게 처리할지 정의
Batch Core
- 스프링 배치의 핵심적인 기능을 담당하는 레이어
- 애플리케이션에서 정의한 배치 작업이 실제로 실행되고 제어되는 부분
- 애플리케이션이 정의한 작업을 어떻게 실행할지 관리
- 주요 컴포넌트 : JobLauncher, Job, Step
Batch Infrastructure
- 배치 작업의 읽기, 쓰기, 재시도 등과 관련된 공통 서비스 제공
- 개발자가 배치 작업에서 사용할 수 있는 데이터 읽기(ItemReader), 데이터 쓰기(ItemWriter)와 같은 구성 요소를 제공
- 코어 레이어에서도 재시도 로직을 구현할 때 사용하는 RetryTemplate 서비스도 포함되어 있음
- 주요 컴포넌트 : ItemReader, ItemWriter, RetryTemplate
'CS > Spring' 카테고리의 다른 글
동시성 제어 (1) 2024.09.30 spring Batch 5.x (2) - 실습 (1) 2024.09.23 JPA - ID 생성 전략 (0) 2024.08.26 Kafka(1) - 카프카란 무엇일까? (0) 2024.07.26 JPA - N+1 문제 해결하기, 성능개선(페이징 처리) (0) 2024.07.22