본문 바로가기
전공공부

[Spring Batch] Batch에서의 Tasklet과 Chunk

by 시아나 2026. 6. 13.

오늘은 배치에 대해 알아보겠다.

배치란 무엇일까.

배치란?

배치는 대용량 데이터를 사용자 개입 없이
컴퓨터가 일괄적으로 처리하는 프레임워크이다.

주로 대용량 데이터 처리, 자동화 등에서 사용된다.

 

배치의 실행 방식

배치는 배치 실행 시점과 동작방식에 따라
아래와 같이 크게 3가지 종류로 나뉜다.

- 정기배치
- 이벤트 배치
- On-Demand 배치

정기 배치 (Scheduled Batch)

정기 배치는 정해진 주기에 따라 자동으로 실행되는 배치이다.
우리가 알고 있는 배치는 대부분 정기 배치일 것이다.

주로 스케줄러 툴과 연동하여 사용한다.

예를 들어
매일 새벽 2시에 통계를 생성한다든지,
매달 25일에 월급 명세서를 발급한다는 등의 작업을 할 수 있다.

 

이벤트 배치 (Event-Driven Batch)

이벤트 배치는 특정 이벤트가 발생하는 경우 실시간 또는 이후에 실행되는 배치이다.
Apach Kafka난 RabbitMQ 같은 메시지 큐에 메시지가 쌓이거나,
파일 시스템에 새로운 대용량 파일이 업로드 되면 연동된 배치에서 작업을 시작하는 것이다.

이전에 Kafka에 대해 조사한 적이 있으니 참고하면 좋을거 같다.

 

Kafka를 활용한 비동기 시스템

이번 프로젝트에서 Apache Kafka를 활용하여 MSA(MicroService Architecture)에서 비동기처리를 한다고 한다.근데 Kafka.. AWS 자격증 시험에서 본거 같은데 왜 얘로 비동기 처리를 하지 궁금해서Kafka가 뭐하는

ytlive.tistory.com

 

온디맨드 배치 (On-Demand batch)

온디맨드 배치는 정해진 주기나 이벤트 없이
사용자의 요청이 있을 경우 1회성으로 실행되는 배치이다.

주로 관리자 페이지에서 버튼을 클릭하거나, 개발자가 명령어를 입력하는 등
수동으로 호출하는 방식으로 동작한다.

예를 들어 인사 담당자가 "자동이체 승인" 버튼 클릭 시
자동이체 배치가 동작하며 월급이 이체되는 등의 상황에서 온디맨드 배치가 동작할 수 있다.

 

배치 개발 방식

그럼 이런 배치는 어떻게 개발할까?
배치 개발 방법에는 크게 Tasklet과 Chunk 두가지 방법이 있다.

Tasklet 방식

Tasklet 방법은 하나의 큰 작업을 한번에 실행하는 방식이다.

https://ai-back-end.tistory.com/93

하나의 Tasklet은 하나의 트랜잭션 범위로 묶인다.
이 때문에 처리 로직이 복잡하지 않은 경우에 많이 사용한다.

또한, 읽기/처리/쓰기와 같은 반복적인 작업보다
파일 삭제, 데이터 초기화 같은 일회성적인 작업, 대용량 데이터가 아닌 처리에 적합하다.

 

Chunk 방식

Chunk 방식은 대용량 데이터를
지정한 크기(Chunk Size)만큼 쪼개서 반복 처리하는 방식이다.

하나의 ChunkSize 별로 commit 한다.
오류가 발생하면 해당 Chunk만큼 롤백되고 이전에 commit 한 데이터는 유지된다.

Chunk는 ItemReader, ItemProcessor, ItemWriter 3가지 요소로 구성되어있다.

ItemReader

ItemReader에서는 데이터를 읽는 작업을 한다.
트랜잭션 내에서 데이터를 1건씩 읽어온다.

만약 페이징방식 등을 사용하여 목록 조회를 하면,
쿼리는 1번 실행하고 청크 크기만큼 데이터를 메모리에 적재한다.

ItemProcessor

ItemProcessor는 Reader가 조회한 데이터를 1건씩 받아서
비즈니스 로직(가공 등)을 수행한다.

해당 단계에서 수정된 데이터는 메모리 상에서만 수정되고
아직 DB에 반영되지 않는다.

ItemWriter

청크 크기만큼 조회(ItemReader)하고 가공(ItemProcessor)된 데이터가 모이면
ItemWriter에서 청크 크기만큼의 데이터를 한번에 DB에 일괄적으로 저장(Update/Insert) 한다.

저장 로직에서 오류가 없다면
즉시 해당 청크의 트랜잭션이 커밋되며 DB에 반영된다.

https://ai-back-end.tistory.com/93

만약 Processor나 Writer에서 오류가 발생하면
이전에 커밋한 데이터는 롤백하지 않고 해당 청크만 롤백한다.

 

 

마치며

이렇게 Spring Batch와 Tasklet, Chunk에 대해서 알아보았다.

다음에는 Chunk의 종류에 대해 알아보고 싶다.