[spring Batch Series] 02.spec
March 12, 2025
2. 특징
- 배치작업
- 대량의 데이터를 처리하는 단계의 모음
- 배치 작업은 작업 단계를 정의하는 Job, JobLauncher로 구서ㅇ된다.
- 단계 기반 접근 방식
- 데이터 처리에 대한 단계 기반 접근 방식을 제공, 스텝과 그 안의 Reader들이 예시
- 항목 처리
- 유효성 검사, 변환, 필터링 등의 작업을 수행할 수 있다.
- 리소스 관리
- DB연결, 파일 리소스 관리 등 지원해서 확장 가능한 방식으로 외부 리소스에 상호작용할 수 있음
- 트랜잭션
- 트랜잭션을 단일, 전체 작업에 걸쳐 구성할 수 있다.
- 오류 처리
- 오류 발생시 장애를 처리할 수 있도록 한다.
- 단계 또는 작업 수준에서 구성할 수 있다.
- 재시작
- 실패하거나 중단된 배치 작업의 재시작을 지원
- 스케일링
- 대량의 데이터를 분산 및 병렬으로 처리할 수 있도록 한다.
- 모니터링
- 진행 상황 모니터링을 지원하여 개발자가 실행 중인 작업의 상태를 추적하고 로깅할 수 있도록 도운다
2. 1. 배치에서 작업이란
- Step
- 한 번에 하나의 데이터 청크를 처리하는 작업의 단일 단계
- 순차 또는 병렬로 실행될 수 있다.
- 파일에서 데이터 읽기, 처리, 쓰기 등을 포함할 수 있다.
- Chunks
- 단일 단계에서 읽고, 처리하고, 쓰는 구성 가능한 항목 수를 나타낸다.
- Reader
- 파일, DB, Queue에서 데이터를 읽는 구성 요소를 나타낸다.
- Processor
- 데이터에 대해서 일부 처리를 수행하고 새 객체 또는 수정된 객체를 반환하는 구성요소
- Writer
- DB 또는 메시징 시스템과 같은 대상에 데이터를 쓰는 구성 요소를 나타낸다.
- 작업 실행 컨텍스트란?
- 여러 단계에서 액세스할 수 있는 데이터를 보유하는 공유 컨텍스트를 나타낸다.
- 단계 간 정보를 전달하고, 작업 매개 변수를 저장하고, 작업 또는 단계 수준 메타데이터를 보유하는 데 사용
- 재시작성
- 실패한 작업을 처음부터가 아닌 실패 지점부터 다시 시작할 수 있게 해준다.
- 파티셔닝
- 하나의 작업을 여러 개의 작은 작업으로 분할하여 여러 처리 노드 또는 서버에서 병렬로 실행할 수 있다.
2.2. 주요 기능
- 청크 지향 처리 : 리소스 활용을 최적화하고 청크로 항목을 처리하여 대량의 데이터를 효과적으로 처리할 수 있다.
- 선언적 단계 처리 : 어노테이션이나 XML로 단계를 구성하여 간단한 작업 정의가 가능
- 작업 재사용성 : 작업을 재사용하여 모듈식 설계가 가능하고, 코드의 중복을 줄일 수 있다.
- 트랜잭션 관리 : 자동 트랜잭션 관리를 통해서 데이터가 일관되기 유지되고 ACID를 준수
- 확장성 : 스프링 배치는 단계의 동시 실행 분할 및 파티셔닝을 통해 대규모 데이터 세트를 처리하도록 구성할 수 있다.
- 통합 : 스프링, 메시지 시스템, DB, 파일 시스템과 원할하게 토합
- 오류 처리 : 건너뛰기, 재시도 작을 포함한 강력한 오류 처리 및 복구 전략
- 실행컨테긋트 : 작업 단계 모두에 대한 상태 정보를 저장하는 실행 컨텍스트 유지를 관리
2.3 장점
- 확장성 :
- 대량 데이터를 효율적으로 처리하도록 설계되어 있으며, 기업 수준의 애플리케이션에 적합하고 확장성이 있다.
- 데이터 처리를 여러 쓰레드 또는 노드에 걸쳐 분할할 수 있어서 자원 사용 및 성능을 최적화 한다.
- 내결함성
- 내장된 오류 처리 및 트랜잭션 관리 지원은 실패 발생 시 작업을 마지막 커밋 상태에서 재시작할 수 있도록 보장
- 모듈형 아키텍쳐
- 모듈형 설계를 따르며 개발자가 비즈니스 요구에 따라 다양한 구성 요소를 쉽게 조합할 수 있게 한다.
- 스프링 생태계와의 통합
- 스프링 생태계의 일부로서 스프링 배치는 다른 프로젝트와 원할하게 통합할 수 있어서 스프링에서 제공하는 풍부한 기능 셋을 누릴 수 있다.
- 선언적 구성
- XML 및 자바 기반 구성을 지원하여 개발자가 배치 작업 및 구성을 정의하는 선호하는 방법을 선택할 수 있게 한다.
2.4. 트랜잭션 관리
- 커밋 간격 : 커밋이 발생하기 전에 처리해야 하는 레코드 수를 지정하는 커밋 간격 구성을 허용한다.
- 청크 지향 처리:
- 데이터를 청크 단위로 처리할 수 있도록 한다.
- 처리 중 오류가 발생하면 현재 청크만 다시 시도하면 극복할 수 있도록 한다.
- 혹시 모를 데이터 손실을 최소화할 수 있다.
- 재시도 및 건너뛰기 논리
- 일시적인 오류에 대한 재시도 로직을 구현하고 특정 조건에 따라 처리에 실패한 항목을 건너뛰도록 할 수 있다.
- 배치 작업의 회복력을 강화하고 비핵심 실패가 전체 배치 프로세스를 중단시키지 않도록 보장