2. 특징

  1. 배치작업
    1. 대량의 데이터를 처리하는 단계의 모음
    2. 배치 작업은 작업 단계를 정의하는 Job, JobLauncher로 구서ㅇ된다.
  2. 단계 기반 접근 방식
    1. 데이터 처리에 대한 단계 기반 접근 방식을 제공, 스텝과 그 안의 Reader들이 예시
  3. 항목 처리
    1. 유효성 검사, 변환, 필터링 등의 작업을 수행할 수 있다.
  4. 리소스 관리
    1. DB연결, 파일 리소스 관리 등 지원해서 확장 가능한 방식으로 외부 리소스에 상호작용할 수 있음
  5. 트랜잭션
    1. 트랜잭션을 단일, 전체 작업에 걸쳐 구성할 수 있다.
  6. 오류 처리
    1. 오류 발생시 장애를 처리할 수 있도록 한다.
    2. 단계 또는 작업 수준에서 구성할 수 있다.
  7. 재시작
    1. 실패하거나 중단된 배치 작업의 재시작을 지원
  8. 스케일링
    1. 대량의 데이터를 분산 및 병렬으로 처리할 수 있도록 한다.
  9. 모니터링
    1. 진행 상황 모니터링을 지원하여 개발자가 실행 중인 작업의 상태를 추적하고 로깅할 수 있도록 도운다

2. 1. 배치에서 작업이란

  1. Step
    1. 한 번에 하나의 데이터 청크를 처리하는 작업의 단일 단계
    2. 순차 또는 병렬로 실행될 수 있다.
    3. 파일에서 데이터 읽기, 처리, 쓰기 등을 포함할 수 있다.
  2. Chunks
    1. 단일 단계에서 읽고, 처리하고, 쓰는 구성 가능한 항목 수를 나타낸다.
  3. Reader
    1. 파일, DB, Queue에서 데이터를 읽는 구성 요소를 나타낸다.
  4. Processor
    1. 데이터에 대해서 일부 처리를 수행하고 새 객체 또는 수정된 객체를 반환하는 구성요소
  5. Writer
    1. DB 또는 메시징 시스템과 같은 대상에 데이터를 쓰는 구성 요소를 나타낸다.
  6. 작업 실행 컨텍스트란?
    1. 여러 단계에서 액세스할 수 있는 데이터를 보유하는 공유 컨텍스트를 나타낸다.
    2. 단계 간 정보를 전달하고, 작업 매개 변수를 저장하고, 작업 또는 단계 수준 메타데이터를 보유하는 데 사용
  7. 재시작성
    1. 실패한 작업을 처음부터가 아닌 실패 지점부터 다시 시작할 수 있게 해준다.
  8. 파티셔닝
    1. 하나의 작업을 여러 개의 작은 작업으로 분할하여 여러 처리 노드 또는 서버에서 병렬로 실행할 수 있다.

2.2. 주요 기능

  1. 청크 지향 처리 : 리소스 활용을 최적화하고 청크로 항목을 처리하여 대량의 데이터를 효과적으로 처리할 수 있다.
  2. 선언적 단계 처리 : 어노테이션이나 XML로 단계를 구성하여 간단한 작업 정의가 가능
  3. 작업 재사용성 : 작업을 재사용하여 모듈식 설계가 가능하고, 코드의 중복을 줄일 수 있다.
  4. 트랜잭션 관리 : 자동 트랜잭션 관리를 통해서 데이터가 일관되기 유지되고 ACID를 준수
  5. 확장성 : 스프링 배치는 단계의 동시 실행 분할 및 파티셔닝을 통해 대규모 데이터 세트를 처리하도록 구성할 수 있다.
  6. 통합 : 스프링, 메시지 시스템, DB, 파일 시스템과 원할하게 토합
  7. 오류 처리 : 건너뛰기, 재시도 작을 포함한 강력한 오류 처리 및 복구 전략
  8. 실행컨테긋트 : 작업 단계 모두에 대한 상태 정보를 저장하는 실행 컨텍스트 유지를 관리

2.3 장점

  1. 확장성 :
    • 대량 데이터를 효율적으로 처리하도록 설계되어 있으며, 기업 수준의 애플리케이션에 적합하고 확장성이 있다.
    • 데이터 처리를 여러 쓰레드 또는 노드에 걸쳐 분할할 수 있어서 자원 사용 및 성능을 최적화 한다.
  2. 내결함성
    • 내장된 오류 처리 및 트랜잭션 관리 지원은 실패 발생 시 작업을 마지막 커밋 상태에서 재시작할 수 있도록 보장
  3. 모듈형 아키텍쳐
    • 모듈형 설계를 따르며 개발자가 비즈니스 요구에 따라 다양한 구성 요소를 쉽게 조합할 수 있게 한다.
  4. 스프링 생태계와의 통합
    • 스프링 생태계의 일부로서 스프링 배치는 다른 프로젝트와 원할하게 통합할 수 있어서 스프링에서 제공하는 풍부한 기능 셋을 누릴 수 있다.
  5. 선언적 구성
    • XML 및 자바 기반 구성을 지원하여 개발자가 배치 작업 및 구성을 정의하는 선호하는 방법을 선택할 수 있게 한다.

2.4. 트랜잭션 관리

  • 커밋 간격 : 커밋이 발생하기 전에 처리해야 하는 레코드 수를 지정하는 커밋 간격 구성을 허용한다.
  • 청크 지향 처리:
    • 데이터를 청크 단위로 처리할 수 있도록 한다.
    • 처리 중 오류가 발생하면 현재 청크만 다시 시도하면 극복할 수 있도록 한다.
    • 혹시 모를 데이터 손실을 최소화할 수 있다.
  • 재시도 및 건너뛰기 논리
    • 일시적인 오류에 대한 재시도 로직을 구현하고 특정 조건에 따라 처리에 실패한 항목을 건너뛰도록 할 수 있다.
    • 배치 작업의 회복력을 강화하고 비핵심 실패가 전체 배치 프로세스를 중단시키지 않도록 보장