CHAPTER 5. 서버 프로그램 구현
Section 5. 배치 프로그램 구현
1. 배치 프로그램
⑴ 배치의 개념
- 데이터를 일괄적으로 모아서 처리하는 대량의 작업을 처리
- 컴퓨터 흐름에 따라 순차적으로 자료를 처리하는 방식
- 배치 프로그램이란, 대량의 데이터를 모아 정기적으로 반복 처리하는 프로그램이다.
⑵ 배치 프로그램의 필수 요소
■ 대용량 데이터
- 대용량의 데이터를 처리할 수 있어야 한다.
■ 자동화
- 심각한 오류 상황 외에는 사용자의 개입없이 동작해야 한다.
■ 견고함
- 비정상적인 동작 중단이 발생하지 않아야 한다.
■ 안정성
- 어떤 문제가 발생했을 때, 해당 문제를 추적하고 복구할 수 있어야 한다.
■ 성능
- 주어진 시간에 작업을 완료해야 하고, 다른 어플리케이션의 동작을 방해하지 않아야 한다.
⑶ 스케줄 관리 종류
① 크론탭 (crontab)
- UNIX, LINUX 계열에서 사용
■ 크론탭 형식
분
시
일
월
요일
명령어
■ 항목의 범위
필드
의미
범위
첫 번째
분
0 ~ 59
두 번째
시
0 ~ 23
세 번째
일
1 ~ 31
네 번째
월
1 ~ 12
다섯 번째
요일
0 ~ 6 (0:일요일, 1:월요일)
여섯 번째
명령어
실행할 명령
■ 허용 특수문자
특수문자
설명
*
모든 값 (매시, 매일, 매주)
?
특정 값이 아닌 어떤 값이든 상관 없음
-
범위를 지정할 때 (12-14 : 12시부터 14시)
,
여러 값을 지정할 때 (12, 14 : 12시, 14시)
/
증분값, 즉 초기값과 증가치 설정 (*/20 : 매 20분 마다)
Ÿ 설정 예
형식
설명
*
*
*
*
*
명령
매분 실행
30
4
*
*
0
명령
매주 일요일 4시 30분 실행
10-30 4 *
*
* 명령
매일 오전 4시 10분부터 30분까지 매분 실행
0,10,20 *
*
*
*
명령
매일 매시간 0분, 10분, 20분 실행
*/30
*
*
*
*
명령
매 30분 마다 실행
30
0
1
1,6
*
명령
1월과 6월, 1일, 0시 30분에 실행
② Spring Batch
- 백엔드의 배치처리 기능을 구현하는데 사용하는 프레임워크
- 대용량 및 고성능 배치 작업을 가능하게 하는 고급 기술 서비스 및 기능을 제공
- 배치가 실패하여 작업 재시작을 하게 된다면 처음부터가 아닌 실패한 지점부터 실행
- Batch Job을 관리하지만 Job을 구동하거나 실행시키는 기능은 지원하진 않는다.
- Batch Job을 실행시키기 위해서는 Quartz, Scheduler, Jenkins등 전용 Scheduler를 사용
- 구성요소 : Job, Job Launcher, Step, Job Repository
③ Quartz Job Scheduler
- 표준 자바 프로그램으로 만들어진 작업을 지정된 일정에 따라 실행시키는데 사용하는 Java 패키지
- 특정한 시간에 특정한 작업을 한다든지 또는 주기적으로 실행해야 할 Java 애플리케이션을 사전에 정해
놓으면 일정에 따라 실행
- 주요 인터페이스 : Scheduler, Job, JobDetail, Trigger, JobBuilder, TriggerBuilder Ÿ 형식
초
분
시
일
월
요일
년(생략가능)
⑷ 배치 스케줄러 클래스 작성
① 배치 설계서 확인
② DTO/VO 구현
③ SQL 문 구현
④ DAO 구현
⑤ Schedule 구현 (매일 1시에 배치 실행)
@Scheduled(cron=“0 0 1 * * ? ”)
public void scheduleExecute(){
String result = “SUCC”;
try{
/* 수행해야 할 업무를 코딩한다 */
}
catch(Exception){
result = “FAIL”;
}
logger.info(“스케줄 실행 결과 : ” + result );
}
'information processing' 카테고리의 다른 글
1-18. 인터페이스 기능 구현(1) (0) | 2022.06.27 |
---|---|
1-17. 인터페이스 개요 및 설계서 확인 (0) | 2022.06.26 |
1-15. 서버 프로그램 구현 (0) | 2022.06.26 |
1-14. 모듈 구현 (0) | 2022.06.26 |
1-13. 개발 프레임 워크 (0) | 2022.06.26 |