오늘은 Spring Batch에 대해서 이해해보는 글을 작성해보려 한다.
배치 처리(Batch Processing)란
대량의 데이터를 일괄 처리하는 방식
주기적 또는 조건에 따라 한 번에 여러 작업을 처리
사용 시점: 실시간 처리가 필요하지 않은 작업에 사용. 대개 많은 양의 데이터를 처리해야 할 때 적합함
전통적인 용도: 금융 시스템의 일괄 결산, 통계 데이터 생성, 대규모 파일 처리, 대량 데이터 마이그레이션 등에 주로 사용
실시간 처리와의 차이점: 실시간 처리는 빠른 응답성을 요구하는 반면, 배치 처리는 미리 정의된 시간에 주기적으로 작업이 실행되며, 즉각적인 응답성보다는 안정성과 대량 처리가 중요

• Job을 실행하는 데 사용되는 클래스
• 외부 이벤트 또는 스케줄러에 의해 실행될 수 있음
• 배치 처리의 기본 단위로, 여러 Step을 묶어서 하나의 작업 흐름을 정의
• 실행되는 Job은 JobRepository에 저장되어 상태를 관리
• Job 내부의 세부 작업 단위
• Step은 작업을 구성하는 하나의 모듈로서, 각 Step은 별도로 설정 가능
• Chunk 기반 처리: 대량의 데이터를 작은 단위(Chunk)로 나누어 일괄 처리
• Tasklet 기반 처리: 하나의 단일 작업을 처리하는 간단한 방식\
• Job과 Step의 실행 상태와 메타데이터를 관리하는 저장소
• 각 Job의 성공/실패 여부, Step의 실행 상태, 오류 발생 시점 등을 기록
• Job이 재시작되거나 중단된 이후에 다시 실행해야 하는 경우, JobRepository를 참조하여 해당 Job을 이전 상태로 복구
• XML 또는 Java 기반 설정을 통해 Job과 Step의 구성 요소를 정의
• 스프링의 DI(Dependency Injection)를 활용하여 설정 가능
• 데이터 소스에서 읽기(Read)
• 데이터 처리(Process)
• 데이터 저장소에 쓰기(Write)
• Chunk 기반 트랜잭션 처리
• READ -> PROCESS -> WRITE -> COMMIT
