Spring | Batch(배치)와 Scheduler(스케줄러)

Ga0·2023년 9월 11일
1

SPRING

목록 보기
13/14

"Spring Schedular를 접하다보면 Batch, Schedular, Quartz 등의 용어들이 나온다. 각각이 의미하는 것은 무엇일까?"

Batch와 Scheduler

Batch(배치)

  • 일괄처리를 의미하며, 사용자와 상호작용 없이 여러개의 작업(job)을 미리 정해둔 순서에 따라 도중에 중단 없이 처리하는 것을 의미.

  • 데이터를 일괄처리하기 때문에 사용자에게 빠른 응답이 필요하지 않은 서비스에 주로 사용(단발성 대용량 데이터 처리)

  • 배치가 이뤄지는 시간(특정 시간) 이후에는 자원을 거의 사용X.

  • 예로 들자면, 오전 12:00에 이뤄지는 은행 정산작업에서 배치가 사용된다.

  • 특징

    • 대용량의 데이터 : 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리가 가능해야 함.
    • 자동화 : 사용자의 개입없이 실행되어야 함.
    • 견고성 : 잘못된 데이터를 충돌/중단 없이 처리할 수 있어야 함.
    • 성능 : 지정한 시간 안에 처리를 완료하거나 동시에 실행되는 다른 프로그램을 방해하지 않아야 함.
    • 신뢰성 : 무엇이, 혹은 어디가 잘못되었는지 추적이 가능해야 함. (기록)

Scheduler(스케줄러)

  • 특정한 시간에 등록한 작업을 자동으로 실행 시키는 것을 의미.

  • Spring에서 제공하는 스케줄러로는 Spring Scheduler, Spring Quartz가 있음.

  • 스프링에서 제공하는 Scheduler

    • 특징
      • 추가적인 의존성 필요X : Spring Framework에서 기본적으로 제공하는 기능
      • 사용이 쉬움 : @Component, @Scheduled (어노테이션 제공)
      • 1개의 Thread pool (쓰레드 풀 : 쓰레드의 모음(미리 생성된 쓰레드로 해당 작업 큐에 있는 작업들을 하나씩 쓰레드가 맡아 처리)) 사용 : 현재 Schedule이 끝나야 다음 Schedule을 실행할 수 있음.
  • 사용방법

-- Quartz의 경우 라이브러리 의존성 추가 
-- Scheduler의 경우 추가적인 라이브러리 존재X
implementation "org.springframework.boot:spring-boot-starter-quartz"
<!--root-context.xml-->
<!-- 컴포넌트 생성(스캔) : 빈에 등록 -->
<context:component-scan base-package="패키지경로"/>
<!--예시-->
<context:component-scan base-package="com.it.spring.been"/>
//서비스구현코드 : SampleServiceImpl.java

//스케줄러 어노테이션 추가
@Scheduled(cron="규칙")
public void sampeMethod(){ // void type이며, Parameter가 없다.
	...
}

Spring Scheduler 설정

  1. fixedDelay : scheduler가 끝나는 시간 기준으로 설정한 밀리초 간격으로 실행
  2. fixedRate : scheduler가 시작하는 기준으로 설정한 밀리초 간격으로 실행
  3. cron 표현식 : cron = 0? : 앞에서 부터 초, 분, 시, 일, 월, 요일(연도)순으로 진행.
    	// 예시 
        
    	cron = 0 * * * * ? : 매 분 0초마다 실행
        cron = 0-3 * * * * ? : 매분 0초, 1초, 2초, 3초에 실행
        cron = 0, 3, 6, * * * * ? : 매분 0초, 3초, 초에 실행
        cron = 0/9 * * * * ? : 0초에 시작해 3초마다 실행
        cron = * 10/10 * * * ? : 10분에 시작해 10분마다 실행
        cron = 0 * ? ? ? ? : 매분 0초마다 시작하며 나머지는 지정X
        

0개의 댓글