Quartz : Job Scheduler / Task Scheduler
정의
Quartz는 Java 기반의 스케줄링 라이브러리로, 특정 시간 또는 주기에 맞춰 작업(Job)을 실행할 수 있도록 지원합니다. 크론 표현식(Cron Expression)을 사용하여 세밀한 스케줄링이 가능하며, 동시 실행 관리와 Job Persistence 기능도 제공합니다.
특징
- 시간 기반 스케줄링: 정해진 시간에 작업 실행.
- 다양한 트리거:
- CronTrigger: 크론 표현식 기반.
- SimpleTrigger: 간단한 간격 설정.
- Job Persistence: 실행 중인 Job 정보를 데이터베이스에 저장하여 애플리케이션이 재시작되더라도 실행 상태를 복구 가능.
- 멀티스레드 환경 지원: 병렬 작업 실행.
사용 사례
- 정기 보고서 생성: 매일 오전 9시에 매출 보고서 생성.
- 데이터 동기화: 주기적으로 외부 API에서 데이터를 가져와 데이터베이스 업데이트.
- 알람/리마인더: 사용자에게 예약된 알림 전송.
유사기술
- Cron: 유닉스 기반 스케줄러.
- Spring Scheduler: Spring Framework에서 제공하는 간단한 작업 스케줄링 도구.
- AWS EventBridge: 클라우드 기반 스케줄링 서비스.
Spring Batch: Batch Processing Framework / ETL Framework
정의
Spring Batch는 대용량 데이터 처리를 목적으로 설계된 프레임워크입니다. ETL(Extract, Transform, Load) 프로세스를 처리하기 위해 사용되며, 데이터를 읽고 가공한 뒤 저장하는 단계를 체계적으로 관리할 수 있습니다.
특징
- Task 분리: Job(전체 작업)과 Step(단일 단계)로 작업을 분리하여 유연하게 관리.
- 대용량 데이터 처리:
- Chunk 기반 처리: 데이터를 작은 청크 단위로 처리.
- Stream 기반 처리: 데이터 스트림 처리.
- Retry/Skip 정책: 에러 발생 시 재시도 또는 스킵 가능.
- Job Repository: Job 실행 기록을 저장하여 실행 상태 추적 가능.
- Spring과 통합: Spring의 다른 컴포넌트와 쉽게 연동 가능.
사용 사례
- 배치 데이터 처리: 대규모 고객 데이터를 주기적으로 변환하고 저장.
- ETL 프로세스: 외부 데이터 소스를 읽고 데이터 웨어하우스에 저장.
- 데이터 마이그레이션: 레거시 시스템에서 새로운 시스템으로 데이터를 이관.
유사기술
- Apache Spark: 대규모 데이터 처리 및 배치 작업 지원.
- Talend: 데이터 통합 및 ETL 플랫폼.
- Hadoop MapReduce: 분산 데이터 처리.
Message Queue Service (MQS) : Message-Oriented Middleware
정의
Message Queue Service는 비동기 메시지 전달을 목적으로 설계된 서비스입니다. 생산자(Producer)와 소비자(Consumer) 간 메시지를 큐를 통해 주고받아 서로 독립적으로 작업할 수 있도록 도와줍니다.
특징
- 비동기 통신: 생산자와 소비자가 동시에 작업할 필요 없음.
- 분산 처리: 여러 소비자가 메시지를 병렬로 처리 가능.
- 내구성(Durability): 메시지가 손실되지 않도록 보장.
- 확장성(Scalability): 소비자를 추가하여 더 많은 메시지를 처리.
- 다양한 패턴 지원:
- Point-to-Point (P2P): 1대1 메시지 전달.
- Publish/Subscribe (Pub/Sub): 1대다 메시지 전달.
사용 사례
- 비동기 작업 처리: 이미지 업로드 후 썸네일 생성.
- 이벤트 기반 아키텍처: 주문 생성 시 이메일 알림 전송.
- 트래픽 스파이크 완화: 사용자가 몰릴 때 요청을 큐에 쌓아 점진적으로 처리.
유사기술
- Apache Kafka: 분산 메시징 플랫폼.
- RabbitMQ: 메시지 브로커.
- Amazon SQS: 클라우드 기반 메시지 큐 서비스.
Quartz, Spring Batch, MQS의 차이점과 사용 시기

이 세 가지는 독립적으로 사용될 수도 있지만, 함께 사용하면 강력한 아키텍처를 설계할 수 있습니다.
종합적으로 Quartz, Spring Batch, MQS의 통합 사용
Quartz: 특정 시간에 트리거를 설정하여 작업을 시작.
Spring Batch: Quartz에서 트리거된 작업이 실행될 때 데이터를 읽고 처리.
MQS: Spring Batch 작업 중 생성된 메시지를 비동기적으로 다른 시스템으로 전달.
통합 사용 예시
매일 오전 9시에 Quartz가 Spring Batch Job을 트리거하여 고객 데이터를 처리. 처리된 데이터를 MQS를 통해 다른 서비스로 전송하여 고객 알림 이메일을 전송.