-
Spring BatchSpring/Batch 2025. 7. 2. 18:41
Spring Batch를 활용한 배치 처리의 개념, 장점, 핵심 구성요소를 정리한 소개 문서입니다. 간단히 개념을 소개하기 위해 작성된 문서로, 구현을 위한 문서는 아닙니다.
배치 처리
Batch 자체가 (일괄적으로 처리되는) 집단[무리] 라는 의미를 가지고 있습니다.
배치 처리란?
반복되는 대량의 데이터 작업을 하기 위해 사용하는 방식을 배치 처리라고 합니다.
배치 처리의 장점
[v] 주기적으로 반복되는 작업을 자동으로 처리
매일 반복되는 작업을 자동으로 처리하여 시간과 인건비를 아낌으로서 시간적, 금전적 효율성을 높일 수 있습니다.
[v] 대용량 데이터 처리를 한 번에, 시스템 부하가 없는 시간대에 처리
사용자가 거의 없는 새벽 시간대에 수백만 개의 레코드를 처리하도록 설정하여 시스템 부하를 줄일 수 있습니다.
[v] 에러가 날시 자동 알림
프로그램이 밤새 돌아가던 중, 에러가 나면 자동으로 담당자에게 알려줄 수 있도록 합니다.
[v] 예측 가능하고 안정적
정해진 시간에 정해진 일을 항상 똑같이 수행할 수 있습니다.
Spring Batch
Spring Batch는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 재사용 가능한 기능을 제공합니다. 또한 최적화 및 파티셔닝 기술을 통해 대용량 및 고성능 배치 작업을 지원하는 더욱 진보된 기술 서비스와 기능을 제공합니다. 단순하거나 복잡한 대용량 배치 작업 모두 이 프레임워크를 활용하여 확장성이 뛰어난 방식으로 방대한 양의 정보를 처리할 수 있습니다. - 스프링 배치 overview 에서 발췌
Spring Batch란?
Spring Batch는 Spring 기반의 프레임워크로, 배치 작업을 쉽게 구현할 수 있게 도와줍니다. 특히, 대량의 데이터를 처리하는 도중 프로그램이 멈출 수 있는 상황을 대비해 안전 장치를 마련할 수 있게 해줍니다.
배치 작업을 할 땐 처리하는 데이터의 종류와 중요도에 따라 배치 작업의 중요성이 달라집니다.
알림 삭제, DB 데이터를 통한 계산은 오류가 발생해도 큰 문제가 일어나지 않습니다.
다시 삭제 하면 되고, 다시 계산하면 됩니다.
반면, 급여 지급이나 은행 이자 계산과 같이 금전이 얽힌 작업은 다릅니다.
이런 작업은 처리 도중 중단되면 그 중단된 지점을 정확히 파악하고, 그 지점부터 재시작할 수 있어야 합니다. 중복 처리되어 급여나 이자를 다시 받는 일이 없도록 해야한다는 것입니다.대량의 데이터를 효율적으로 처리할 때, 빠르게 처리하는 것도 중요하지만 처리 도중 중단된 지점을 기록하여 중복 실행을 방지하는 것이 핵심입니다.
이런 처리를 위해 Spring Batch는 작업 진행 상황을 기록하는 테이블을 사용합니다.
이 테이블을 메타데이터 테이블이라고 부르며, 지정된 DB에 해당 테이블이 자동 생성되고, 실행 이력과 상태 등을 저장할 수 있게 합니다.
Spring Batch 핵심 구성요소

The Domain Language of Batch JobRepository
모든 배치 처리의 메타데이터*를 저장하는 저장소 역할을 한다.*실행 이력, 상태 등
위에서 말한 메타데이터 테이블에 접근할 수 있도록 해주는 컴포넌트이기도 합니다.
메타데이터 테이블 ▼
더보기메타데이터 테이블은 batch_* 라는 이름으로 하나가 아닌 여러 개가 생성됩니다.


자동 생성된 메타데이터 테이블 종류 (PostgreSQL 이용/캡처 화면의 인터페이스 좌:pgAdmin 우: IntelliJ DB 연결) JobLauncher
하나의 배치 작업(Job)을 실행시키는 컴포넌트이다.
Job
배치 처리의 단위 작업을 정의한 객체이다.
- 최소한 1개 이상의 Step 을 가진다.
Step
Job을 구성하는 실제 실행 단위이다.
일반적으로 (읽기 → 처리 → 쓰기)구조를 따르고 있습니다.
- 1개의 Job에 여러 Step을 가질 수 있다.
ItemReader (읽기)
입력 데이터를 읽어오는 역할을 한다.
파일, 데이터베이스, 엑셀, API 등 다양한 소스에서 데이터를 가져올 수 있습니다.
ItemProcessor (처리)
Reader에서 읽어온 데이터를 가공하거나 필터링하는 등 처리하는 역할을 한다.
필수가 아니며, 생략할 수 있습니다.
ItemWriter (쓰기)
처리된 데이터를 출력(쓰기)하는 역할을 한다.
최종적으로 DB에 저장하거나 파일에 기록하는 단계입니다.
래퍼런스
'Spring > Batch' 카테고리의 다른 글
Spring Batch로 배치 처리하기 - Reader, Processor, Writer 커스텀하기 (2) 2025.07.03