728x90
1. 개념
1.1 Spring Batch 란?
- 대용량 데이터나 반복적인 업무를 효율적으로 처리하기 위한 스프링 기반 배치 프레임워크
1.2 언제 사용하는가?
1.2.1 주기적으로 실행되는 작업이 있는 경우
- ex) 정산
1.2.2 대용량 데이터를 처리해야 하는 경우
- ex) 로그 분석
1.2.3 멀티 스레드, 분산 처리, 병렬 처리가 필요한 경우
- ex) 매출 데이터 분석
1.2.4 재시도 혹은 재실행이 필요한 경우
- ex) 외부 API에서 데이터를 가져와서 처리하는 경우
1.2.5 트랜잭션 관리가 필요한 경우
- ex) 포인트 적립
1.3 왜 사용하는가?
1.3.1 일관된 아키텍처
- 배치 작업에 필요한 공통 패턴과 템플릿을 미리 제공해 중복 코드 최소화
1.3.2 안정성 & 트랜잭션 관리
- 실패 시 재시도, 재실행을 지원하며 트랜잭션 경계를 쉽게 설정 가능
1.3.3 손쉬운 모니터링 & 로깅
- Job, Step 단위로 상태를 관리하여 문제 원인 파악이 쉬움
1.4 특징
1.4.1 잡(Job)과 스텝(Step)을 통한 구조적 설계
- 작업 단계를 명확히 구분해 유지보수가 쉽고, 실패/재실행 시에도 어디서 문제가 발생했는지 확인이 용이
1.4.2 Chunk(청크) 지향 처리
- 대량 데이터를 일정 덩어리(Chunk)로 나눠 읽고, 가공 후 한 번에 쓰는 방식
1.4.3 다양한 인터페이스 및 구현체 지원
- ItemReader, ItemProcessor, ItemWriter 등 표준화된 인터페이스 제공
- CSV, JDBC 등… 제공
1.4.4 에러 처리 및 재시도(Retry) 정책
- 작업 도중 오류가 발생해도 재시도 횟수, 건너뛰기(Skip) 등을 설정 가능
2. 아키텍처
2.1 JobLauncher
- 외부 (스케줄러 등)로 부터 배치를 실행 하라는 요청을 받아 시작
- ❗햇갈리면 안되는 내용
Spring Batch
VSScheduler(or Quartz)
어떤걸 사용하는게 좋을까요??- 서로 다른 개념이니 비교하면 안된다!
Spring Batch
는 대용량 처리!Spring Scheduler
는 특정한 시간에 등록된 작업을 자동으로 실행시키는 것!
Job
과 파라미터 정보를 받아Job
을 실행하고, 그 결과를 반환
2.2 JobRepository
- 배치 작업의 메타 데이터를 저장/관리하는 장소
- 각
Job
과Step
의 실행 결과를 DB에 기록하여 재실행, 모니터링, 통계 분석 등 활용할 수 있도록 함
2.3 Job
- 하나의 배치 프로세스 전체를 나타내는 상위 개념
- 내부에 여러
Step
을 가지고 있으며 각Step
을 순서대로 실행
2.4 Step
- 배치 처리를 위한 실질적인 실행 단위
2.4.1 ItemReader
- DB, 파일, 메시지 큐 등에서 데이터를 한 건씩(또는 여러 건 단위) 읽어 옴
2.4.2 ItemProcessor
- 읽어온 데이터를 가공, 변환, 검증, 필터링 등 비즈니스 로직 수행
2.4.3 ItemWriter
- 가공된 데이터를 최종적으로 저장(파일, DB 등)
2.5 ExecutionContext & JobExecution
- ExecutionContext
- 각
Step
에서의 중간 상태나 필요한 데이터를 임시로 저장하는 컨텍스트
- 각
- JobExecution / StepExecution
- 실행 시간, 처리 건수, 오류 발생 시점 등 세부 정보를 기록해
JobRepository
에 보관 - 재 시작 시 참조되어 어디까지 진행되었는지 확인 가능
- 실행 시간, 처리 건수, 오류 발생 시점 등 세부 정보를 기록해
반응형
'Study > Spring' 카테고리의 다른 글
[Spring] Spring Security + OAuth 2.0 소셜 로그인 (1) | 2025.01.16 |
---|---|
[Spring Boot] DB Lock (0) | 2025.01.10 |
[Spring] QueryDSL-JPA (0) | 2024.12.30 |
[Spring] @InitBinder (0) | 2021.08.08 |
[Spring] @Data 어노테이션 (0) | 2021.06.30 |