728x90
- 스프링 배치 래퍼런스 문서 번역 : https://godekdls.github.io/Spring%20Batch/introduction/ Batch
- Spring Batch 공식 Reference : https://docs.spring.io/spring-batch/docs/current/reference/html
Spring Batch
- 컴퓨터에서 사람과 상호작용 없이 실행되는 프로그램이다.
- 사용자의 피드백이 필요하지않다. 이는 사용자의 개입 없이 진행됨을 말한다.(일반적인 Web 프로그램과의 차이)
Spring Batch 사용 예
- 대용량 데이터베이스, 파일, 큐를 읽는 것
- 일정하고 주기적인 데이터 처리 과정
==> 주로 데이터의 처리에 사용된다.
Spring Batch 의 구조
- Job > Step > Tasklet - Chunk(내부적으로 Tasklet 기반이다.)
Spring Batch 의 실행 구조
- 그림에서 보이듯이 JobParameter 를 Job 이 실행되어 JobInstance 가 실행될때 파라미터를 할당할 수 있는데, 이를 '늦은 바인딩'(Late Binding)이라 한다. 이는 Spring Batch 의 Job 과 Step 을 동적으로 생성하게 만들 수 있게 해주며, 이를 위해서 @JobScope , @StepScope 를 사용해 범위를 달리 할 수 있다.
- @JobScope : Step 에서 사용할 수 있다.
- @StepScope : Tasklet / Reader / Processor / Writer 에서 사용할 수 있다.
Job
- Job을 처음부터 끝까지 독립적으로 실행할 수 있는 고유하며 순서가 지정된 여러 Step의 목록이라고 정의할 수 있다.
Step
- Step은 잡의 구성 요소를 담당한다. Step은 서로간 독립적이며 트랜젝션은 스텝 내에서 이루어진다.
- Tasklet || Chunk 로 구성할 수 있다.
Tasklet
- Tasklet은 차례로 실행되는 여러 단계로 구성되나. 각 단계는 정의된 작업을 하나만 수행해야 한다.
Chunk ( Reader / Processor / Writer )
- 데이터 레코드를 읽고 처리하는 작업을 수행한다.
- 한 번에 모든 줄을 읽고 처리하지 않고 설정된 양의 레코드(청크)를 읽고 처리하고 쓴다.
JobRepository
- 스프링 배치는 잡이 실행될 때 잡의 상태를 JobRepository 에 저장해 관리한다.
- 또한 JobRepository 를 통해 데이터를 저장하고 조회할 수 있도록 API 를 제공한다.
JobExplorer
- JobExplorer 는 JobRepository 가 다루는 데이터와 동일한 데이터를 읽기 전용으로만 보는 API 를 제공한다.
JobRepository 와 JobExplorer 참고 블로그
기본 예제
Spring Batch Tasklet으로 사용해보는 간단예제
Quartz
- Job Scheduling 라이브러리이다.
- 쿼츠는 스케줄러 , 잡 , 트리거 라는 세 가지 주요 컴포넌트를 가진다.
- 스케줄러는 SchedulerFactory 를 통해서 가져올 수 있으면 JobDetails 및 트리거의 저장소 기능을 한다.또한 스케줄러는 연관된 트리거가 작동할 때 잡을 실행하는 역할을 한다.
- 잡은 실행할 작업의 단위이다.
- 트리거는 작업 실행 시점을 정의한다.
- 트리거가 작동돼 쿼츠에게 잡을 실행하도록 지시하면 잡의 개별 실행을 정의하는 JobDetails 객체가 생성된다.
아래 예제를 통해 살펴보자
Quartz 예제
Jenkins 를 활용해보기
728x90
'Batch' 카테고리의 다른 글
Spring Batch 를 Jenkins 를 이용해 간단하게 사용해보자 (0) | 2022.07.08 |
---|---|
Quartz 사용해보기 (0) | 2022.04.25 |
Job 실습해보기 (0) | 2022.04.05 |
스프링 배치 스텝 Step (0) | 2022.04.04 |
스프링 배치 잡 Job (0) | 2022.04.04 |