Spring Batch Introduction
왜 필요한데?
- 기업 도메인의 많은 애플리케이션은 대량 처리(Batch Processing)를 필요로 함.
- 이는 다음과 같은 미션 크리티컬한 환경에서 비즈니스 작업을 수행하기 위함임.
어떤 작업을 처리할 수 있는데?
- 사용자 개입 없이 자동으로 대량의 데이터를 복잡하게 처리하는 작업
- 예: 월말 정산, 알림 발송, 서신 발송 등 시간 기반 이벤트 처리.
- 복잡한 비즈니스 규칙을 주기적으로 대규모 데이터셋에 반복 적용하는 작업
- 예: 보험 혜택 계산, 요율 조정 등.
- 내부 또는 외부 시스템에서 수신한 데이터를 통합 + 포맷팅(유효성 검사)
➔ Spring Batch는 이러한 배치 애플리케이션을 견고하게 개발할 수 있도록 도와주는 경량/포괄적인 프레임워크
중요: Spring Batch는 스케줄러가 아님.
- 상용 및 오픈소스 스케줄러와 함께 사용하는 것이 목적
- Quartz, Tivoli, Control-M 등
Spring Batch는 다음과 같은 대량 처리 필수 기능을 제공
- 로깅, 추적, 트랜잭션 관리
- 작업 통계, 재시작, 스킵, 리소스 관리 등
- 고성능 처리와 분할(partitioning)을 통한 대규모 작업 처리
Backgound
- Java 기반 배치 처리를 위한 재사용 가능한 아키텍처가 부족해 기업마다 개별 솔루션을 만드는 문제가 있었음.
- 이를 해결하기 위해 SpringSource와 Accenture가 협력하여 Spring Batch를 개발.
- Accenture는 수십 년간의 배치 처리 경험을 기반으로 기존 사내 프레임워크를 오픈소스로 기여.
- 현실적인 요구사항을 반영해 실무 적용이 가능한 표준 배치 프레임워크를 만들었음.
- Spring Batch는 기업 및 공공기관이 안정적인 배치 시스템을 구축하는 데 도움을 줌.
Usage Scenarios
🌀 사용 시나리오
일반적인 배치 프로그램은 다음과 같은 구조로 작동합니다:
- 데이터를 대량으로 읽고 (DB, 파일, 큐 등에서),
- 처리를 수행한 후,
- 수정된 형태로 다시 저장합니다.
- Spring Batch는 이러한 기본적인 배치 반복 작업을 자동화
- 유사한 트랜잭션들을 일괄적으로 처리(batch processing)할 수 있는 기능을 제공
- 이러한 처리는 일반적으로 오프라인 환경에서 사용자 개입 없이 수행
Spring Batch는 오픈소스 중 유일하게 엔터프라이즈 수준의 견고한 솔루션을 제공하는 프레임워크
🌀 비즈니스 시나리오
Spring Batch는 다음과 같은 업무 요구사항에 대응할 수 있습니다:
- 주기적으로 커밋하는 배치 처리
- 병렬 실행을 통한 동시 배치 처리
- 메시지 기반 처리를 단계적으로 수행하는 엔터프라이즈 시스템
- 대규모 병렬 배치 처리
- 실패 후 수동 또는 스케줄 기반 재시작
- 의존된 Step을 순차적으로 처리 (워크플로우 기반 확장 가능)
- 부분 처리: 예외 발생 시 일부 레코드 건너뛰기 (예: 롤백 시 스킵)
- 전체 트랜잭션 처리: 작은 배치나 기존 저장 프로시저/스크립트를 사용하는 경우
🌀 기술적 목표
Spring Batch는 다음과 같은 기술적 목표를 가지고 설계되었습니다:
- Spring 프로그래밍 모델을 그대로 사용할 수 있도록 지원
→ 개발자는 비즈니스 로직에 집중하고, 인프라는 프레임워크가 담당. - 인프라, 실행 환경, 애플리케이션 간의 책임을 명확히 분리
→ 관심사의 분리(Separation of Concerns). - 모든 프로젝트에서 구현 가능한 핵심 실행 서비스 인터페이스 제공
- 기본적으로 사용할 수 있는 간단한 구현체(out-of-the-box) 제공
- Spring 프레임워크를 모든 계층에서 사용하여, 설정, 확장, 커스터마이징을 쉽게 함
- 모든 코어 서비스는 인프라 레이어에 영향을 주지 않고 교체/확장 가능
- 배포가 간단한 구조 제공
→ 아키텍처 JAR과 애플리케이션을 분리하여 Maven으로 구성 가능
'Book > Spring Batch docs' 카테고리의 다른 글
| ItemReaders and ItemWriters (0) | 2025.10.07 |
|---|---|
| Configuring a Step (0) | 2025.10.06 |
| Configuring and Running a Job (0) | 2025.07.17 |
| The Domain Language of Batch (0) | 2025.07.07 |
| Spring Batch Architecture (0) | 2025.07.06 |