nhnacademy-aiot1-5 / study

공부한 내용을 기록하는 저장소입니다.
MIT License
0 stars 0 forks source link

스프링 배치 #58

Open huhsiyoung opened 1 month ago

huhsiyoung commented 1 month ago

배치 어플리케이션의 조건

대용량 데이터 : 대량의 데이터를 가져오거나, 전달, 조회 처리를 할 수 있어야 함. 자동화 : 심각한 문제 외에 사용자 개입 없이 실행. 견고성 : 잘못된 데이터를 중단 없이 처리할 수 있어야 함. 신뢰성 : 무엇이 잘못됬는지 로깅이나 알림을 통해 추적이 가능해야 함 성능 : 시간 안에 처리를 완료하거나 다른 어플리케이션을 방해하지 않도록 수행.

배치 어플리케이션은 대용량 처리를 목적으로 한다.

스케줄링 : 지정된 시간에 지정한 작업을 하는 것 자바에서는 쿼츠 스케줄러라는 라이브러리 제공

배치에서는 스케줄링 작업을 제공하지 않는다.

Image

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