스프링 배치?
- 대용량 일괄처리의 편의를 위해 설계된 가볍고 포괄적인 배치 프레임워크
- 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 처리에 필수적인 재사용 가능한 기능을 제공
- Spring 특성을 그대로 가져왔기 때문에 DI, AOP, 서비스 추상화 등 Spring 프레임워크 3대 요소 모두 사용 가능
사용 이유?
- 대용량의 비지니스 데이터를 복잡한 작업으로 처리해야하는 경우
- 특정한 시점에 스케쥴러를 통해 자동화된 작업이 필요한 경우 (ex. 푸시알림, 월 별 리포트)
- 대용량 데이터의 포맷을 변경, 유효성 검사 등의 작업을 트랜잭션 안에서 처리 후 기록해야하는 경우
<aside>
❓ Batch? Quartz? Scheduler?
- Quartz는 스케줄러의 역할
- Batch는 대용량 데이터 처리에 대한 기능 지원 역할
- 즉, Quartz와 Batch는 비교 대상이 아니며, 보통 Quartz + Batch로 사용함
</aside>
배치의 시나리오
-
데이터베이스, 파일 또는 큐에서 데이터 읽기
-
데이터를 정의한 방식으로 처리
-
처리된 데이터를 쓰기
⇒ 사용자와의 상호작용 없이 반복적으로 데이터를 트랜잭션 단위로 처리할 수 있도록 구현함.
⇒ 개발자는 데이터 처리에 대한 비지니스 로직에만 집중하여 배치 프로세스 작성 가능.
스프링 배치 계층 구조
