Spring Batch 간단 정리
약 4분 소요
목차
서론
예전에 이 글을 썼을 때는 “Spring Batch가 뭔지 간단히 정리해두자” 정도의 느낌으로만 적었습니다.
지금은 배치를 실제 프로덕션에서 몇 년 동안 운영해보면서, 단순 개념 정리만으로는 부족하다는 생각이 많이 듭니다.
이번 글에서는 Spring Batch를 처음 접하는 분을 기준으로,
- Spring Batch가 무엇인지
- 언제 쓰는 게 맞는지
Tasklet과Chunk방식의 차이- 실무에서 반드시 신경 써야 하는 포인트
를 한 번에 정리해보려고 합니다.
Spring Batch란 무엇인가?
Spring Batch는 대량의 데이터를 안정적으로 일괄 처리하기 위한 프레임워크입니다.
- 대량 데이터 처리에 필요한 공통 기능을 제공
- 로그/모니터링
- 트랜잭션 관리
- 재시작, 재시도, 스킵 처리
- 실행 이력/통계 저장
- 개발자는 비즈니스 로직(
Reader/Processor/Writer)에만 집중할 수 있도록 도와주는 레이어라고 보면 됩니다.
스케줄러와는 다른 역할
초기에 가장 많이 하는 오해가 하나 있습니다.
“Spring Batch를 쓰면 스케줄러 없이도 매일 1시에 자동 실행되겠지?”
실제로는 그렇지 않습니다.
- Spring Batch
Job,Step,Reader/Processor/Writer를 정의하고 실행/재시작/통계를 관리
- 스케줄러 (Quartz, Cron, Jenkins 등)
- “언제” 실행할지를 결정하고
JobLauncher를 호출
- “언제” 실행할지를 결정하고
즉, Spring Batch는 배치 작업을 어떻게 처리할지를 담당하고,
실제 언제 돌릴지는 스케줄러가 담당합니다.