이번 포스팅에서는 스케줄링과 배치가 무엇인지랑 스프링 쿼츠가 무엇인지에 대해 알아보려고 한다. 일단 스케줄링과 배치에 대해 먼저 알아보자.


스케줄링과 배치는 관련이 깊지만 각 역활과 목적에 차이가 있다.

  • 스케줄링(Scheduling)
    스케줄링은 특정 작업이나 프로세스를 예약된 시간 또는 조건에 따라 실행되도록 관리하는 과정을 말한다. 작업 실행 시기를 정확히 제어할 수 있게 해주며, 주기적인 작업 관리에 특히 유용하다.

  • 배치(Batch Processing)
    배치 처리는 데이터 또는 작업을 일괄적으로 처리하는 방식을 말한다. 대량의 데이터를 효과적으로 처리할 수 있고, 사용자의 개입 없이 자동으로 실행될 수 있다.

Quartz

쿼츠는 그럼 배치일까? 스케줄링일까?


정답은 쿼츠는 스케줄링 프레임워크다. 쿼츠를 사용하게 되면 단순 반복 작업부터 복잡한 크론(Cron)기반의 작업까지 다양한 스케줄링 옵션까지 제공하기 때문에 편하고 강력하다.

Spring Quartz 주요 요소

Quartz의 주요 메소드는 Scheduler, Job, JobDetail, Trigger가 있다.

  • Scheduler
    작업(Job)과 트리거(Trigger)를 등록/실행 관리하는 역활을 하며, 여러 작업과 트리거를 조정하며 작업을 실행할 시기와 방법을 정한다.

  • Job
    작업(Jbo)은 스케줄링된 작업을 수행하며, Job 인스턴스를 정의하고 해당 인스턴스를 Spring 빈으로 등록할 수 있다.

  • JobDetail JobDetail은 작업(Job)의 인스턴스를 래핑하고 Job실행에 필요한 추가 정보를 제공한다. 예를 들어 Job의 이름, 그룹, 기타 파라미터 등을 설정할 수 있다. JobDetail객체는 스케줄러에 Job을 등록할 때 사용되고, Quartz는 JobDetail을 통해 어떤 Job을 언제 실행할지를 관리한다.

  • Trigger Trigger는 Job을 언제 실행할지를 결정하는 Quartz의 구성 요소다. 가장 일반적인 두 유형의 트리거는 SimpleTrigger와 CronTrigger가 있다.


    • SimpleTrigger : 한번 실행하거나 지정된 간격으로 반복 실행할 때 사용한다.
    • CronTrigger : Corn과 같은 방식으로 복잡한 시간 기반 스케줄을 설정할 때 사용한다. 크론 표현식을 사용하기 때문에 정확한 실행 시기를 정의할 수 있다.