JobExecution
- 실행 중인 Job의 특정 인스턴스
- 이벤트에 반응하여 트리거되거나 일정에 따라 실행될 떄마다 Job이 생성
- 실행에 대한 모든 정보를 포함하여, 매개변수, 실행 컨텍스트 및 상태가 포함된다.
- 시작부터 끝까지 전체 프로세스를 캡슐화하여 모니터링 및 관리를 가능하게 한다.
- JobRepository에 저장되어 Job실행의 상태와 컨텍스트를 지속적으로 유지한다.
- STARTED
- STOPPING
- STOPPED
- COMPLETED
- FAILED
- UNKNOWN
- JobParameter와 함께 사용하여
- 고유성 부여 : 매개변수에 의해 고유하게 식별될 수 있다.
- 조건부 로직: 실행 흐름을 결정할 수 있다.
- 재사용성과 유연서어 : 재사용이 가능하고 하드 코딩된 값을 외부에서 매개변수로 받아서 처리할 수 있다.
- ExecutionContext:
- SharingData : 서로 다른 단계 간 데이터와 상태를 공유할 수 있게 해준다.
- Checkpoint Management : 긴 실행 프로세스에서 체크 포인트 관리에 중요하다. Job실패 후 재시작시 ExecutionContext에서 상태를 복원해서 중단지점부터 처리한다.
- Flexibility : 공유 컨텍스트에 데이터를 저장하고 꺼내올 수 있다.
- Customization : 저장해야할 데이터를 정의하고 Job의 요구 사항에 대해서 매우 유연하고 적응 가능하게 만든다.
- 재시작 과정
- SetUpJobRestartability
- HandlingExecutionContext
- JobParameter
- TriggeringRestasrt
- MonitoringAndLogging
계속 읽기
7. JobRepository
- 작업 구성, 작업 매개변수 및 각 단계의 상태와 같은 작업 실행의 메타 데이터를 관리
- 작업 실행 기록
- 단계 실행 세부 정보
- 작업 매개 변수
계속 읽기
2. Step
- 작업 내 독립적 단위
- 스텝을 연결해서 순차적 처리 흐름을 형성할 수도 있다.
- 세분화 : 성능 및 최적화를 위해서 독립적으로 조장할 수 있어서 효율적인 디버깅 및 테스트가 가능하다.
- 작업 및 청크 지향 처리 : Tasklet으로 정의되거나 Chunk로 정의될 수 있다.
- 리스너 : 사전 및 사후 처리 작업을 수행하기 위한 생명 주기 이벤트에 후킹하기 위해서 리스너를 사용할 수 있다.
계속 읽기
1. Job
- Batch의 최상위 작업 단위
- 순서대로 실행되는 하나 이상의 단계로 구성
- 특정시간에 실행되도록 구성 및 예약하거나 이벤트에 의해 트리거되도록 설정할 수도 있다.
- 전체 배치 처리 워크플로우를 캡슐화하는 주요 구성 요소이다.
- 원자성 : 단일 처리 단위로 취급된다.
- 재사용성 : 다양한 데이터 셋, 작업에 대해서 재사용할 수 있다.
- 확장성 : 구성 설정을 통해 작업이 확장되고 병렬로 실행되어 성능이 향상
계속 읽기
2. 특징
- 배치작업
- 대량의 데이터를 처리하는 단계의 모음
- 배치 작업은 작업 단계를 정의하는 Job, JobLauncher로 구서ㅇ된다.
- 단계 기반 접근 방식
- 데이터 처리에 대한 단계 기반 접근 방식을 제공, 스텝과 그 안의 Reader들이 예시
- 항목 처리
- 유효성 검사, 변환, 필터링 등의 작업을 수행할 수 있다.
- 리소스 관리
- DB연결, 파일 리소스 관리 등 지원해서 확장 가능한 방식으로 외부 리소스에 상호작용할 수 있음
- 트랜잭션
- 트랜잭션을 단일, 전체 작업에 걸쳐 구성할 수 있다.
- 오류 처리
- 오류 발생시 장애를 처리할 수 있도록 한다.
- 단계 또는 작업 수준에서 구성할 수 있다.
- 재시작
- 실패하거나 중단된 배치 작업의 재시작을 지원
- 스케일링
- 대량의 데이터를 분산 및 병렬으로 처리할 수 있도록 한다.
- 모니터링
- 진행 상황 모니터링을 지원하여 개발자가 실행 중인 작업의 상태를 추적하고 로깅할 수 있도록 도운다
계속 읽기
1. 아키텍쳐
- Job:
- 배치 애플리케이션의 최상위 구성 요소
- 작업은 순차적으로 실행되는 하나 이상의 단계로 구성
- Step:
- 스텝은 작업의 단일 단계를 나타낸다.
- 데이터를 처리하기 위해서 함께 동작하는 Reader, Processor, Writer가 존재한다.
- ItemReader
- 파일이나 DB같은 소스에서 데이터를 읽는 방법 제공
- JdbcCursorItemReader 및 FlatFileItemReader 같은 내장 ItemReader가 있다.
- ItemProcessor
- 처리 중인 데이터에 비즈니스 로직을 적용하는 방법을 제공한다.
- 입력을 받아서 출력 항목을 반환
- ItemProcessorAdapter, CompsiteItemProcessor 같은 내장 ItemProcessor가 있다.
- ItemWriter
- 데이터를 파일이나 DB에 저장하는 방법을 제공한다.
- JdbcBatchITemWriter, FlatFileItemWriter 등 내장 ItemWriter를 제공
- JobRepository
- 작업 단계 및 실행 데이터를 저장하는 방법을 제공
- MapJobRepository, JobRepositoryFactoryBean와 같은 구현 제공
- JobLauncher
- 시작과 중지를 담당
계속 읽기