대용량 데이터 : 대량의 데이터를 가져오거나, 전달, 조회 처리를 할 수 있어야 함.
자동화 : 심각한 문제 외에 사용자 개입 없이 실행.
견고성 : 잘못된 데이터를 중단 없이 처리할 수 있어야 함.
신뢰성 : 무엇이 잘못됬는지 로깅이나 알림을 통해 추적이 가능해야 함
성능 : 시간 안에 처리를 완료하거나 다른 어플리케이션을 방해하지 않도록 수행.
배치 어플리케이션은 대용량 처리를 목적으로 한다.
스케줄링 : 지정된 시간에 지정한 작업을 하는 것
자바에서는 쿼츠 스케줄러라는 라이브러리 제공
배치에서는 스케줄링 작업을 제공하지 않는다.
JobLuncher : Job, JobParameters 실행하는 객체
Job : 배치처리 과정을 하나로 만든 객체. 배치 처리 과정에 있어 전체 계층 최상단에 위치하고 있음.
JobInstance : Job의 실행 단위.
Job을 실행하면 JobInstance가 생성.
특정 Job의 실제 실행 인스턴스를 의미함.
예) 1월 1일 실행, 1월 2일 실행 시 각각의 JobInstance 생성
한번 생성된 JobInstance는 해당 날짜의 데이터를 처리하는데 사용되고
실패시 같은 JobInstance를 다시 실행하여 작업함.
JobRepository : 배치 처리 정보를 담고 있는 매커니즘.
Job 실행 시 JobRepository에 JobExecution과 StepExecution을 생성하고
JobRepository에서 실행 정보들을 저장하고 조회하며 사용함.
JobParameters : JobInstance를 생성하고 구별하는데 사용되는 파라미터.
String, Double, Long, Date 4가지 타입의 파라미터 지원.
JobExecution : JobInstance 실행 시도 객체. (JobInstance 실행 상태, 시작 시간, 종료 시간, 생성시간 정보를 가짐)
1월 1일 JobInstance가 실패해 재실행해도 동일한 JobInstance를 실행하지만
JobExecution은 개별로 생김.
Step : Job의 배치처리를 정의하고 순차적인 단계 캡슐화
Job은 최소 1개의 Step을 가지고 Job의 실제 일괄 처리를 제어하는 모든 정보가 있음
ItemReader : Step에서 Item을 읽어오는 인터페이스.
다양한 인터페이스 존재해 여러 방식으로 Item을 읽을 수 있음.
ItemProcessor : Reader에서 읽어온 Item 데이터를 처리하는 역할.
프로세서는 배치를 처리하는 필수 요소는 아니며 reader, processor, writer 처리를 분리하여 역할을 구분하고 있음.
ItemWriter : 처리된 데이터를 write하는데 사용. 다양한 인터페이스 존재
처리 결과에 따라 insert, update 혹은 큐를 사용 시 send가 될 수 있음.
Item을 Chunk로 묶어 처리하고 있음.
배치 어플리케이션의 조건
대용량 데이터 : 대량의 데이터를 가져오거나, 전달, 조회 처리를 할 수 있어야 함. 자동화 : 심각한 문제 외에 사용자 개입 없이 실행. 견고성 : 잘못된 데이터를 중단 없이 처리할 수 있어야 함. 신뢰성 : 무엇이 잘못됬는지 로깅이나 알림을 통해 추적이 가능해야 함 성능 : 시간 안에 처리를 완료하거나 다른 어플리케이션을 방해하지 않도록 수행.
배치 어플리케이션은 대용량 처리를 목적으로 한다.
스케줄링 : 지정된 시간에 지정한 작업을 하는 것 자바에서는 쿼츠 스케줄러라는 라이브러리 제공
배치에서는 스케줄링 작업을 제공하지 않는다.
JobLuncher : Job, JobParameters 실행하는 객체
Job : 배치처리 과정을 하나로 만든 객체. 배치 처리 과정에 있어 전체 계층 최상단에 위치하고 있음.
JobInstance : Job의 실행 단위. Job을 실행하면 JobInstance가 생성. 특정 Job의 실제 실행 인스턴스를 의미함. 예) 1월 1일 실행, 1월 2일 실행 시 각각의 JobInstance 생성 한번 생성된 JobInstance는 해당 날짜의 데이터를 처리하는데 사용되고 실패시 같은 JobInstance를 다시 실행하여 작업함.
JobRepository : 배치 처리 정보를 담고 있는 매커니즘. Job 실행 시 JobRepository에 JobExecution과 StepExecution을 생성하고 JobRepository에서 실행 정보들을 저장하고 조회하며 사용함.
JobParameters : JobInstance를 생성하고 구별하는데 사용되는 파라미터. String, Double, Long, Date 4가지 타입의 파라미터 지원.
JobExecution : JobInstance 실행 시도 객체. (JobInstance 실행 상태, 시작 시간, 종료 시간, 생성시간 정보를 가짐) 1월 1일 JobInstance가 실패해 재실행해도 동일한 JobInstance를 실행하지만 JobExecution은 개별로 생김.
Step : Job의 배치처리를 정의하고 순차적인 단계 캡슐화 Job은 최소 1개의 Step을 가지고 Job의 실제 일괄 처리를 제어하는 모든 정보가 있음
ItemReader : Step에서 Item을 읽어오는 인터페이스. 다양한 인터페이스 존재해 여러 방식으로 Item을 읽을 수 있음.
ItemProcessor : Reader에서 읽어온 Item 데이터를 처리하는 역할. 프로세서는 배치를 처리하는 필수 요소는 아니며 reader, processor, writer 처리를 분리하여 역할을 구분하고 있음.
ItemWriter : 처리된 데이터를 write하는데 사용. 다양한 인터페이스 존재 처리 결과에 따라 insert, update 혹은 큐를 사용 시 send가 될 수 있음. Item을 Chunk로 묶어 처리하고 있음.
참고 블로그 https://dkswnkk.tistory.com/707