Spring Batch의 개념
2026년 8월 1일
들어가며
- 스프링 배치는 스프링 프레임워크를 기반으로 만들어진 배치 처리 프레임워크다.
- 익숙한 기술로 배치 처리를 쉽게 구현할 수 있게 해준다.
- K-Bap 프로젝트에서 주기적으로 음식 데이터를 적재하기 위해 LangChain을 AWS Lambda로 배포했다. 주기적으로 데이터베이스를 스캔하여 SQS로 람다가 실행할 수 있는 메시지로 발행하여 자체 데이터를 적재해야 한다.
기본 개념
- 스프링 배치는 아래와 같은 표준화된 방식으로 구성된다.
- Job: 하나의 완전한 배치 처리 작업
- Step: Job의 세부 실행 단계(하나의 Job은 여러 Step으로 구성 가능)
- ItemReader: 데이터를 읽어오는 컴포넌트
- ItemProcesoor: 데이터를 가공하는 컴포넌트
- ItemWritre: 데이터를 저장하는 컴포넌트
- 다양한 데이터 소스를 지원한다. 종류별로 ItemReader, ItemWriter 인터페이스의 구현체가 있어 일관된 방식으로 데이터 처리가 가능하다.
- 트랜잭션을 지원한다. 배치 작업 중간에 문제가 발생할 경우 체크포인트를 설정하고 특정 지점부터 재시작 가능하다.
-
모든 Job과 Step의 실행 상태를 메타데이터로 관리한다. 따라서 작업의 실행 시점과 결과를 정확하게 추적할 수 있다.
- 대용량 데이터 처리가 가능하다.
- Chunk 지향 처리
- 대량의 데이터를 지정된 크기로 나누어 순차 처리
- 효율적인 데이터 읽기
- 페이징, 커서 방식
- 확장성 기법
- 멀티스레드 step: 하나의 step을 여러 스레드로 처리
- 병렬 step: 여러 step을 동시에 실행
- 분산 처리: 여러 서버에서 배치 처리 분산 실행
- Chunk 지향 처리
- 대량의 데이터를 조회할 때 메모리 최적화를 위해 나눠 읽을 수 있는 기능을 제공한다.
- JdbcCursorItemReader
- 데이터베이스와 연결을 유지하면서 순차적으로 가져온다.
- 하나의 커넥션으로 데이터를 스트리밍하듯 처리한다.
- 데이터베이스와 연결을 유지한 채 배치가 진행되므로 긴 배치 작업 동안 커넥션을 장기 점유할 가능성이 있다.
- JdbcPagingItemReader
- 데이터를 정확한 크기로 처리한다.
- 각 페이지마다 새로운 쿼리를 날려 조회한다.
- JdbcCursorItemReader
댓글