본문 바로가기

Batch

Spring Batch A 부터 Z 까지

728x90

 

 

 

 

 

Spring Batch

  • 컴퓨터에서 사람과 상호작용 없이 실행되는 프로그램이다.
  • 사용자의 피드백이 필요하지않다. 이는 사용자의 개입 없이 진행됨을 말한다.(일반적인 Web 프로그램과의 차이)

사진 출처 : [우아한테크세미나] 190926 우아한스프링배치 by 우아한형제들 이동욱님

 

Spring Batch 사용 예

  • 대용량 데이터베이스, 파일, 큐를 읽는 것
  • 일정하고 주기적인 데이터 처리 과정

==> 주로 데이터의 처리에 사용된다.

Spring Batch 의 구조

  • Job > Step > Tasklet - Chunk(내부적으로 Tasklet 기반이다.)

사진 출처 : [우아한테크세미나] 190926 우아한스프링배치 by 우아한형제들 이동욱님

 

Spring Batch 의 실행 구조

  • 그림에서 보이듯이 JobParameter 를 Job 이 실행되어 JobInstance 가 실행될때 파라미터를 할당할 수 있는데, 이를 '늦은 바인딩'(Late Binding)이라 한다. 이는 Spring Batch 의 Job 과 Step 을 동적으로 생성하게 만들 수 있게 해주며, 이를 위해서 @JobScope , @StepScope 를 사용해 범위를 달리 할 수 있다.
  • @JobScope : Step 에서 사용할 수 있다.
  • @StepScope : Tasklet / Reader / Processor / Writer 에서 사용할 수 있다.

Job

  • Job을 처음부터 끝까지 독립적으로 실행할 수 있는 고유하며 순서가 지정된 여러 Step의 목록이라고 정의할 수 있다.

Step

참고 : Baeldung

  • 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 예제

참고 : 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