반응형
🌱 Spring Batch란?
Spring Batch는 대용량 데이터 처리에 특화된 스프링 기반의 프레임워크입니다.
주로 배치 작업(정해진 시간에 실행되는 반복적이고 대량의 데이터 처리 작업)을 구현할 때 사용되며, 로그 처리, DB 이관, 정산, 통계 처리 등 다양한 곳에서 활용됩니다.
1. 특징
- 신뢰성 있는 대규모 데이터 처리 지원
- 트랜잭션, 로깅, 재시도, 스킵, 청크 처리 등 배치 처리에 필요한 기능 내장
- 스프링 프레임워크와 완전히 통합됨
- 선언적 구성(XML, Java Config)과 유연한 확장성
2. 기본 구조
Spring Batch는 아래와 같은 구조로 작동합니다.
Job → Step → (ItemReader → ItemProcessor → ItemWriter)
구성요소 | 설명 |
Job | 하나의 배치 작업 단위, 여러 Step으로 구성 |
Step | Job을 구성하는 개별 작업 단위 |
ItemReader | 데이터 입력을 담당 (예: DB, 파일, 큐 등) |
ItemProcessor | 읽어온 데이터를 가공하거나 검증 |
ItemWriter | 처리된 데이터를 저장 (예: DB에 저장, 파일로 출력 등) |
3. 예시
@Bean
public Job sampleJob(JobRepository jobRepository, Step sampleStep) {
return new JobBuilder("sampleJob", jobRepository)
.start(sampleStep)
.build();
}
@Bean
public Step sampleStep(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
return new StepBuilder("sampleStep", jobRepository)
.<String, String>chunk(10, transactionManager)
.reader(itemReader())
.processor(itemProcessor())
.writer(itemWriter())
.build();
}
4. Chunk 기반 처리란?
Chunk는 데이터를 일정 단위로 나눠서 처리하는 방식입니다.
예: 1,000건의 데이터를 100건씩 끊어서
→ 100건 읽고 → 100건 가공 → 100건 저장
→ 다음 100건 반복...
이 방식은 메모리 사용을 줄이고, 실패 시 롤백이 가능하도록 해줍니다.
5. 주요 기능
기능 | 설명 |
트랜잭션 관리 | Step 또는 Chunk 단위로 트랜잭션 처리 |
실패 및 재시도 | 예외 발생 시 자동 재시도 또는 건너뛰기 설정 가능 |
잡 재시작 | 실패한 Job을 이어서 재실행할 수 있음 |
병렬 처리 | Step 단위 또는 청크 단위로 병렬 처리 가능 |
스케쥴링 연동 | Spring Scheduler, Quartz 등과 연동 가능 |
6. 활용 예시
- CSV 파일을 읽어 DB에 저장
- DB에서 데이터를 읽어 보고서 PDF 생성
- 대규모 정산 로직 처리
- 사용자 포인트 이관
Spring Batch는 단순한 반복 작업만 처리하는 것이 아니라, 데이터를 안정적으로 대량 처리하고, 에러를 통제하며, 재시작까지 고려한 정교한 설계가 가능합니다.
기업 시스템에서 주기적으로 실행되는 백엔드 작업에 널리 사용됩니다.
반응형
'Framework > Spring' 카테고리의 다른 글
[ Spring ] Spring HATEOAS에 대해서 알아보기 (0) | 2025.04.05 |
---|---|
[ Spring ] Spring cloud - 스프링 클라우드 알아보기 (0) | 2025.03.23 |
[ Spring ] Spring security - 스프링 시큐리티 알아보기 (0) | 2025.03.23 |
[ Spring ] Spring Data - 스프링 데이터 프로젝트 알아보기 (0) | 2025.03.23 |
[ Spring ] Spring Boot - 스프링 부트 알아보기 (0) | 2025.03.23 |