springBatch

006 Step

February 18, 2024
2023-02-18
springBatch

강의메모 # 스프링 배치 도메인 이해 - STEP # 기본 개념 # Batch job을 구성하는 독립적인 하나의 단계로서 실제 배치 처리를 정의하고 컨트롤하는 데 필요한 모든 정보를 가지고 있는 도메인 객체 단순한 단일 태스크 뿐 아니라 입력과 처리 그리고 출력과 관련된 복잡한 비즈니스 로직을 포함하는 모든 설정들을 담고 있다. 배치작업을 어떻게 구성하고 실행할 것인지 Job 의 세부 작업을 Task 기반으로 설정하고 명세해 놓은 객체 모든 Job은 하나 이상의 step으로 구성됨 기본 구현체 # TaskletStep 가장 기본이 되는 클래스로서 Tasklet 타입의 구현체들을 제어한다 PartitionStep 멀티 스레드 방식으로 Step 을 여러 개로 분리해서 실행한다 JobStep Step 내에서 Job 을 실행하도록 한다 FlowStep Step 내에서 Flow 를 실행하도록 한다 Step # API 를 설정할 때 Tasklet 과 Chunk 기반 클래스를 동시에 설정할 수 없다 API 설정에 따른 각 Step 생성 예제 # TaskletStep # 직접 생성한 Tasklet 실행 TaskletStep # ChunkOrientedTasklet 을 실행 JobStep # Step 에서 Job 을 실행 FlowStep # Step 에서 Flow 를 실행 References https://www. ...

007 Step Execution

February 18, 2024
2023-02-18
springBatch

강의메모 # 스프링 배치 도메인 이해 - StepExecution # 기본 개념 # Step 에 대한 한번의 시도를 의미하는 객체로서 Step 실행 중에 발생한 정보들을 저장하고 있는 객체 시작시간, 종료시간 ,상태(시작됨,완료,실패), commit count, rollback count 등의 속성을 가짐 Step 이 매번 시도될 때마다 생성되며 각 Step 별로 생성된다 Job 이 재시작 하더라도 이미 성공적으로 완료된 Step 은 재 실행되지 않고 실패한 Step 만 실행된다 이전 단계 Step이 실패해서 현재 Step을 실행하지 않았다면 StepExecution을 생성하지 않는다. ...

008 Step Contribution

February 18, 2024
2023-02-18
springBatch

강의메모 # 스프링 배치 도메인 이해 - StepContribution # 기본 개념 # 청크 프로세스의 변경 사항을 버퍼링 한 후 StepExecution 상태를 업데이트하는 도메인 객체 청크 커밋 직전에 StepExecution 의 apply 메서드를 호출하여 상태를 업데이트 함 ExitStatus 의 기본 종료코드 외 사용자 정의 종료코드를 생성해서 적용 할 수 있음 구조 # 참고 # https://devfunny.tistory.com/687 apply() 메서드를 호출한 경우 : StepContribution의 변경 사항이 StepExecution에 반영 apply() 메서드를 호출하지 않을 경우 : StepExecution에 StepContribution의 변경 사항이 반영안됨 Spring Batch에서는 일반적으로 StepContribution의 변경 사항이 자동으로 StepExecution에 적용된다. ...

004 Job Parameter

February 4, 2024
2023-02-04
springBatch

강의메모 # 스프링 배치 도메인 이해 - JobParameter # 기본 개념 # Job을 실행할 때 함께 포함되어 사용되는 파라미터를 가진 도메인 객체 하나의 Job에 존재할 수 있는 여러개의 JobInstance를 구분하기 위한 용도 JobParameters와 JobInstance는 1:1 관계 생성 및 바인딩 # 어플리케이션 실행 시 주입 Java -jar LogBatch.jar requestDate=20210101 코드로 생성 JobParameterBuilder @Component public class JobParameterTest implements ApplicationRunner { @Autowired JobLauncher jobLauncher; @Autowired Job job; @Override public void run(ApplicationArguments args) throws Exception { JobParameters jobParameters = new JobParametersBuilder(). ...

005 Job Execution

February 4, 2024
2023-02-04
springBatch

강의메모 # 스프링 배치 도메인 이해 - JobExecution # 기본 개념 # JobIstance 에 대한 한번의 시도를 의미하는 객체로서 Job 실행 중에 발생한 정보들을 저장하고 있는 객체 시작시간, 종료시간 ,상태(시작됨,완료,실패),종료상태의 속성을 가짐 JobIstance 과의 관계 JobExecution은 ‘FAILED’ 또는 ‘COMPLETED‘ 등의 Job의 실행 결과 상태를 가지고 있음 JobExecution 의 실행 상태 결과가 ‘COMPLETED’일 경우 JobInstance 실행이 완료된 것으로 간주해서 재실행이 불가함 JobExecution 의 실행 상태 결과가 ‘FAILED’일 경우 JobInstance 실행이 완료되지 않은 것으로 간주해서 재실행이 가능함 JobParameter가 동일한 값으로 Job 을 실행할지라도 JobInstance를 계속 실행할 수 있음 JobExecution 의 실행 상태 결과가 ‘COMPLETED’ 될 때까지 하나의 JobInstance 내에서 여러 번의 시도가 생길 수 있음 JobInstance와 JobExcecution 관계 # https://devfunny. ...

002 Job

January 27, 2024
2023-01-27
springBatch

강의메모 # 스프링 배치 도메인 이해 - Job # 기본 개념 # 배치 계층 구조에서 가장 상위에 있는 개념 하나의 배치작업 자체를 의미함 ex) API 서버의 접속 로그 데이터를 통계 서버로 옮기는 배치 Job 자체를 의미 Job Configuration 을 통해 생성되는 객체 단위로서 배치작업을 어떻게 구성하고 실행할 것인지 전체적으로 설정하고 명세해 놓은 객체 배치 Job 을 구성하기 위한 최상위 인터페이스이며 스프링 배치가 기본 구현체를 제공한다 여러 Step 을 포함하고 있는 컨테이너로서 반드시 한개 이상의 Step으로 구성해야 함 기본 구현체 # SimpleJob 순차적으로 Step 을 실행시키는 Job 모든 Job에서 유용하게 사용할 수 있는 표준 기능을 갖고 있음 FlowJob 특정한 조건과 흐름에 따라 Step 을 구성하여 실행시키는 Job Flow 객체를 실행시켜서 작업을 진행함 References https://www. ...

003 Job Instance

January 27, 2024
2023-01-27
springBatch

강의메모 # 스프링 배치 도메인 이해 - JobInstance # 기본 개념 # Job 이 실행될 때 생성되는 Job의 논리적 실행 단위 객체 고유하게 식별 가능한 작업 실행을 나타냄 Job 의 설정과 구성은 동일하지만 Job 이 실행되는 시점에 처리하는 내용은 다르기 때문에 Job 의 실행을 구분해야 함 ex) 하루에 한 번 씩 배치 Job이 실행된다면 매일 실행되는 각각의 Job 을 JobInstance 로 표현 JobInstance 생성 및 실행 처음 시작하는 Job + JobParameter 일 경우 새로운 JobInstance 생성 이전과 동일한 Job + JobParameter 으로 실행 할 경우 이미 존재하는 JobInstance 리턴 내부적으로 JobName + jobKey (jobParametes 의 해시값) 를 가지고 JobInstance 객체를 얻음 Job 과는 1:M 관계 BATCH_JOB_INSTANCE 테이블과 매핑 # JOB_NAME (Job) 과 JOB_KEY (JobParameter 해시값) 가 동일한 데이터는 중복해서 저장할 수 없음 ...

001 Springbatch Start

January 6, 2024
2023-01-06
springBatch

강의메모 # 스프링 배치 소개 # 탄생 배경 # 자바 기반 표준 배치 기술 부재 스프링 배치는 SpringSource(현재는 Pivotal)와 Accenture(경영 컨설팅 기업)의 합작품 Accenture - 배치 아키텍처를 구현하면서 쌓은 기술적인 경험과 노하우 SpringSource - 깊이 있는 기술적 기반과 스프링의 프로그래밍 모델 배치 핵심 패턴 # Read(데이터 조회), Process(데이터 가공), Write(데이터 저장) 배치 시나리오 # 배치 프로세스를 주기적으로 커밋 동시 다발적인 Job 의 배치 처리, 대용량 병렬 처리 실패 후 수동 또는 스케줄링에 의한 재시작 의존관계가 있는 step 여러 개를 순차적으로 처리 조건적 Flow 구성을 통한 체계적이고 유연한 배치 모델 구성 반복, 재시도, Skip 처리 아키텍처 # 도서 - 스프링배치 완벽가이드 # 1장. ...