hayu's 개발 일지

[TIL]240413 Scheduler, Batch, Quartz / 프로젝트 Spring Scheduler 선택 이유 본문

프레임워크/spring

[TIL]240413 Scheduler, Batch, Quartz / 프로젝트 Spring Scheduler 선택 이유

hayu00 2024. 4. 13. 21:03

Spring Scheduler 선택 이유

Scheduler

  • 주기적으로 또는 특정 시간에 작업을 실행할 수 있도록 도와주는 도구이다.단점 : 실행 시간의 예측이 어렵다. / 복잡한 작업 처리가 어렵다. /
  • → 주기적으로 실행되어야 하는 간단한 작업에 적합하다. 실시간 처리가 필요하지 않은 경우에 사용된다.
  • 장점 : 구현이 간편하다. / 다양한 스케쥴링 옵션이 있다. / 스프링 내부 기능와 통합이 용이하다.

Batch(배치)

  • 배치는 대량의 데이터를 처리하고 일괄 작업을 수행하기 위한 기능이다.단점 : 실시간 처리가 어렵다. / 설정과 구현이 복잡하다.→ 대량의 데이터를 처리할 때 적합하다. 데이터 정제 및 변환 작업이 필요한 경우 혹은 일괄적인 작업 실행이 필요한 경우에 사용된다.
  • → 일괄 작업을 실행하는 도구로, 스케쥴링 기능을 내장하고 있지 않다. 배치를 사용하면 Quartz, Scheduler, Jenkins 등 전용 스케줄러를 사용해야한다.
  • 장점 : 대량의 데이터 처리가 가능하다. / 복잡한 작업의 흐름을 다룰 수 있다.

스프링 배치(Spring Batch)의 만족 조건

  • 대용량 데이터 : 대량의 데이터를 가져오거나, 전달, 계산 등의 처리를 할 수 있어야 합니다.
  • 자동화 : 심각한 문제 해결을 제외하고는 사용자가 개입 없이 실행되어야 합니다.
  • 견고성 : 잘못된 데이터를 충돌/중단 없이 처리할 수 있어야 합니다.
  • 신뢰성 : 무엇이 잘못되었는지를 추적할 수 있어야 합니다.(로깅, 알림)
  • 성능 : 지정한 시간 안에 처리를 완료하거나 동시에 실행되는 다른 애플리케이션을 방해하지 않도록 수행되어야 합니다.

Quartz

  • Quartz(쿼츠)는 자바 기반의 오픈 소스 스케쥴링 라이브러리로, 스프링 어플리케이션에서 스케쥴링 작업하는데 사용된다.
  • 스프링에서 기본으로 제공해주지 않기 때문에 의존성 주입이 필요하다.
  • implementation "org.springframework.boot:spring-boot-starter-quartz”
  • corn 표현식만 사용 가능하다.단점 : 설정이 복잡하다. / 학습 곡선이 높다.
  • → 다양한 스케쥴링 옵션이 필요한 경우에 적합하다.
  • 장점 : 다양한 스케쥴링 옵션이 있다. (예) 특정 시간에 작업을 예약, 주기적으로 작업을 실행하는 옵션 등) / 고가용성 - 한 서버가 셧다운 되어도 다른 서버에서 실행되어 다운 타임이 없다. / 확작성 - 쿼츠 설정된 서버를 구동하면 자동으로 DB에 스케줄 인스턴스로 등록된다. (셧다운 된 서버는 다른 서버에 의해 DB에서 삭제된다.)

'프레임워크 > spring' 카테고리의 다른 글

[TIL]240418 영속성 컨텍스트  (0) 2024.04.18
[TIL]240415 테스트란  (0) 2024.04.15
[TIL]240412 Spring Scheduler  (0) 2024.04.12
[TIL]240409 Dirty Checking  (0) 2024.04.09
[TIL]240402 Polling, Long Polling, Websocket, SSE  (0) 2024.04.02