Spring Batch는 대량의 데이터 처리를 위해 설계된 스프링 프레임워크의 확장 모듈입니다. 이는 일반적으로 배치 작업(batch jobs)의 실행과 관리에 사용됩니다. 배치 작업은 특정한 시점에 자동으로 실행되거나 사용자의 개입 없이 반복 실행되는 작업을 의미합니다.

Spring Batch에서 배치가 실패하여 작업 재시작을 하게 된다면 처음부터가 아닌 실패한 지점부터 실행을 하게 됩니다. 또한 중복 실행을 막기 위해 성공한 이력이 있는 Batch는 동일한 Parameters로 실행 시 Exception이 발생하게 됩니다.

Untitled

Spring Batch의 주요 특징:

  1. 확장성: 대량의 데이터를 효과적으로 처리할 수 있도록 설계되었습니다.
  2. 장애 허용성: 작업 중 오류가 발생하더라도 재시작이나 건너뛰기 기능을 통해 작업을 완료할 수 있습니다.
  3. 다양한 입출력: 다양한 데이터 소스 및 대상에 대한 지원이 있습니다 (예: 데이터베이스, 파일, 메시지 큐 등).
  4. 트랜잭션 관리: 청크(chunk) 방식으로 트랜잭션을 관리하여 성능과 안정성을 동시에 추구합니다.

Spring Batch 용어

JobLauncher

JobLauncher는 Job과 JobParameters를 사용하여 Job을 실행하는 객체입니다.

Untitled

Job

Job은 배치처리 과정을 하나의 단위로 만들어 놓은 객체입니다. 또한 배치 처리 과정에 있어 전체 계층 최상단에 위치하고 있습니다. 하나의 Job은 여러 Step을 포함할 수 있습니다.

Job Instance

Job Instance는 논리적인 작업 실행을 나타냅니다. 즉, 하나의 Job은 여러개의 Job Instance를 만들어낼 수 있습니다. 때문에 Job을 구분하기 위해선 별도의 jobParameter가 필요하며 동일한 내용의 Job이 실행되더라도, 파라미터가 다르면 다른 Job Instance로 취급됩니다.

JobExecution