프로젝트를 진행하던 도중 매일 6시를 기준으로 데이터를 변경해줘야 하는 기능을 구현해보기로 하였다
이전에 Spring batch 라는 것에 대하여 알고 있었고 이번 기회를 통하여 정리 해보고자 한다
[ 참고 블로그 ]
https://dgjinsu.tistory.com/20
[spring batch] 스프링 배치와 스케줄러의 차이
스프링 배치 란? 사용자와 상호작용 없이 여러 개의 작업을 미리 정해진 순서에 따라 중단 없이 처리하는 것이다. Spring Batch는 엔터프라이즈 시스템의 운영에 있어 대용량 일괄처리의 편의를 위
dgjinsu.tistory.com
1. 스프링 배치(Batch)란?
- 정의 -
스프링 배치란 간단하게 설명하자면 정해진 프로그램을 순서에 따라 중단 없이 처리하는 것 이라고 이해하면 편하다.
사용자와 상호작용 없이(어떠한 명령 없이) 여러 개의 작업을 미리 정해진 순서대로 처리하는 것, 그것이 배치이다.
Spring Batch는 엔터프라이즈 시스템의 운영에 있어 대용량 일괄처리의 편의를 위해 설계된 가볍고 포괄적인 배치 프레임 워크 이다. Spring의 특성을 그대로 가져왔기 때문에 DI, AOP, 서비스 추상화 등 Spring 프로엠워크의 3대 요소를 모두 사용할 수 있다.
스프링 배치를 사용하는 경우는 다음과 같다.
- 대용량의 비즈니스 데이터를 복잡한 작업으로 처리해야 하는 경우
- 특정한 시점에서 스케쥴러를 통해 자동화 된 작업이 필요한 경우
- 대용량 데이터의 포맷을 변경, 유효성 검사 등의 작업을 트랜잭션 안에서 처리 후 기록해야하는 경우
스프링 배치의 만족 조건
(1) 대용량 데이터 : 대량의 데이터를 가져오거나 전달, 계산 등의 처리가 가능해야한다
(2) 자동화 : 심각한 문제 해결을 제외하고는 사용자의 개입 없이 실행 가능해야한다
(3) 견고성 : 잘못 된 데이터를 충돌 / 중단 없이 처리 가능해야한다
(4) 신뢰성 : 무엇이 잘못되었는지를 추적할 수 있어야한다(로깅, 알림)
(5) 성능 : 지정한 시간 안에 처리를 완료하거나 동시에 실행되는 다른 애플리케이션을 방해하지 않도록 수행되어야 합니다
2. 스프링 스케줄러(Scheduler) 란?
- 정의 -
스케줄러란 특정한 시간에 등록 된 작업을 자동으로 실행시키는 것이다. 스프링 스케줄러는 스프링 프레임워크에서 기본적으로 제공하는 스케줄러 이다.
스프링 스케줄러의 특징
(1) 추가적인 의존성 불필요 : 스프링 프레임워크의 기본기능이기에 불필요
(2) 사용이 쉬움 : @Component와 @Scheduled 어노테이션으로 사용가능
(3) 1개의 Tread pool 사용 : Schedule이 끝나야 다음 Schedule 실행 가능
cron 표현식
cron = 0 * * * * ? : 앞에서부터 초, 분, 시 , 일, 월, 요일(연도) 순으로 진행된
(1) 표현식 : 특수문자
* : 모든 값(매시, 매일, 매주처럼 사용한다.)
? : 특정 값이 아닌 어떤 값이든 상관 없음
- : 범위를 지정할 때
, : 여러 값을 지정할 때
/ : 증분값, 즉 초기값과 증가치를 설정할 때
L : 지정할 수 있는 범위의 마지막 값 표시
W : 가장 가까운 평일(weekday)을 설정할 때
# : N번 째 특정 요일을 설정할 때
(2) 다양한 cron 표현식 예시
3. 정리
배치는 배치 프레임워크로 만들어진 사용자의 개입없이 순서대로 프로그램을 실행
스케줄링은 스프링 프레임워크에서 제공하는 것으로 특정 시간에 하나의 쓰레드 풀을 가지고 실행한다.
'Spring' 카테고리의 다른 글
AOP란 무엇일까 ? (0) | 2024.01.22 |
---|---|
Redis가 무엇일까 ? 어떻게 사용할 수 있을까 ? (0) | 2024.01.14 |
Spring 로그인 / Session : JWT 차이점과 장단점 (0) | 2024.01.10 |
JPA N+1 문제가 생기는 이유와 해결 과정 대해서... (0) | 2024.01.09 |
Optional 바르게 사용해보자! (0) | 2023.12.03 |