← 목록으로
📅 2026.06.16
파트 3. Step 구현 방식: Tasklet과 Chunk 지향 처리 (작성중)
SpringSpringBootSpringBatchTechStudy

본 문서는 Step 구현 방식인 Tasklet과 Chunk 지향 처리에 대해 정리한 기록입니다.


1. Step의 두 가지 실행 흐름

Step은 설정에 따라 두 가지 흐름으로 작업이 나뉩니다.

  • Tasklet 방식: 단일 비즈니스 로직(예: 파일 삭제, 단순 이메일 전송, 프로시저 호출)을 단발성으로 수행하고 끝냅니다. 대용량 데이터 처리보다는 단일성 작업에 적합합니다.
  • Chunk 지향 방식: 대용량 데이터를 처리하기 위해 메모리 효율적으로 반복 순환 루프를 타는 구조입니다.

2. Chunk 지향 처리 내부 흐름

대부분의 실무 배치 프로세스는 Chunk 지향 방식으로 구현됩니다. 내부 흐름은 다음과 같이 반복됩니다.

  1. ItemReader: 데이터 소스(DB의 Cursor 또는 Page, 파일 등)로부터 데이터를 1건씩 읽어옵니다.
  2. ItemProcessor: 읽어온 데이터를 가공하거나 필터링합니다 (마찬가지로 1건씩 진행).
  3. 모으기 (Accumulate): 이 과정이 설정된 Commit Interval(Chunk Size) 만큼 반복될 때까지 데이터를 메모리(List)에 모읍니다.
  4. ItemWriter: Chunk Size만큼 데이터가 쌓이면 모인 List를 ItemWriter에 한 번에 던져 일괄 저장(Bulk Insert/Update)을 수행하고 트랜잭션을 커밋합니다.
  5. 전체 데이터를 다 읽을 때까지 이 Chunk 과정을 반복합니다.

왜 Chunk 방식이 중요한가?

천만 건의 데이터를 처리할 때 모든 데이터를 메모리에 올리면 즉시 OutOfMemoryError가 발생합니다. Chunk 지향 처리는 데이터를 일정 단위(예: 1000건)로 끊어서 읽고, 가공하고, DB에 커밋하고 메모리를 비우는 과정을 반복합니다. 이로 인해 메모리를 일관되게 적게 소모하면서 대용량 데이터를 안전하게 처리할 수 있습니다.