제1장 소개

내용 목차

1.1. Jakarta Batch 기본 개념
1.2. Jakarta Batch 구성 요소
1.2.1. JobOperator
1.2.2. Job
1.2.3. Step
1.2.4. ItemReader
1.2.5. ItemWriter
1.2.6. ItemProcessor
1.2.7. Checkpoints

본 장에서는 Jakarta Batch의 개념과 구성 요소에 대해서 설명한다.

배치 처리방식은 널리 사용되는 워크로드 패턴으로, 벌크 지향적이고 상호호환을 하지 않으며 백그라운드에서 실행되는 특징이 있다. 일반적으로 오래 실행되고 계산양이 많은 작업들에 적합하고, 병렬적으로 처리하거나 순차적으로 처리해야하는 작업들에 모두 이용 가능하다. 다양한 방식으로 배치 처리를 시작할 수 있는데, 예를 들면 ad-hoc, 스케줄, on-demand 방식으로 실행될 수 있다. 배치 애플리케이션들의 로깅, 체크포인팅, 병렬화 등에 대한 요구를 만족시키고, 배치 워크로드에 대해 관제할 수 있는 기능이 제공되어 작업의 게시, 중지/재시작같은 상호작용을 가능하게 한다.

JEUS에서는 스펙에서 제공하는 RI를 기반으로 동작하고, 작업이 실행될 스레드 풀을 사용자가 명세할 수 있도록 기능을 제공한다.

참고

Jakarta Batch에 대한 상세한 내용은 JSR-352 스펙을 참조하기를 권한다.

본 절에서는 JBatch에서 정의하고 있는 작업을 구성하는 요소들에 대한 개념을 간략하게 설명한다.

다음은 Jakarta Batch를 구성하는 핵심적인 요소들 간의 관계이다.


사용자 애플리케이션에서 JobOperator를 통해서 Job을 제어(실행 혹은 중지)하고, Job은 수행할 작업에 대한 명세를 가지고 있다. Step은 Job의 하위에 속하며, 하나의 Job은 여러 Step으로 이루어질 수 있다. 마지막으로 step은 ItemReader, ItemProcessor, ItemWriter의 처리 모듈이 분리되어 있다. 이 모든 것은 JBatch 구현체 내의 JobRepository에 메타정보가 저장된다.

Job은 배치 프로세스 전체를 캡슐화한 정보이고 여러 Step으로 구성될 수 있고, 모든 Step을 전역적으로 관리하는 환경 설정을 할 수 있다. Job의 환경설정으로 Job의 이름, Step의 순서 정의, Job의 재시작 기능 설정 유무를 명시할 수 있다.

Step은 연속된 단계로 처리해야 하는 배치 작업을 각 작업들 간에 관계를 독립적으로 캡슐화한 정보이다. 모든 Job은 여러 개의 Step으로 구성될 수 있고, Step은 실제 배치 처리에 대한 모든 정보와 제어하기 위해 필요한 정보들을 담고 있다. Step의 간단한 예로 파일을 읽어서 데이터베이스로 넣는 작업을 예로 들 수 있다. Job과 JobExecution의 관계처럼 Step도 StepExecution을 가지고 있다.

다음 그림은 Job과 Step의 관계를 나타낸다. Job과 Step이 one-to-many 관계이고, 각 step은 상황에 따라 StepExecution을 여러 번 만들어 실행시킬 수 있다. JobExecution과 StepExecution 관계 역시 one-to-many 관계이고, 하나의 Job이 상황에 따라 여러 StepExecution을 생성하여 실행하는 관계가 될 수 있다.