배치 처리
IT 위키
더 많은 작업
- Batch Process
데이터를 축적하다가 일정 주기마다 일괄적으로 처리하는 방식
- 사용자와의 상호작용 없이 대량의 데이터를 정해진 시점에 한꺼번에 처리한다.
- 예: 은행의 일일 이자 계산·정산, 월말 급여 계산, 통계 집계, 야간 데이터 백업, 로그 정리
- 이러한 처리를 수행하는 프로그램을 배치 프로그램이라 한다.
| 요소 | 설명 |
|---|---|
| 대용량 데이터 | 대량의 데이터를 가져오고, 전달하고, 계산하고, 저장할 수 있어야 한다. |
| 자동화 | 심각한 오류 상황 외에는 사용자 개입 없이 수행되어야 한다. |
| 견고성 | 잘못된 데이터나 중복 데이터로 인한 예외 상황에서도 비정상 중단 없이 처리해야 한다. |
| 안정성·신뢰성 | 오류가 발생하면 위치와 시간을 추적할 수 있도록 로그를 남기고 알려야 한다. |
| 성능 | 다른 응용 프로그램의 수행을 방해하지 않고, 지정된 시간 내에 처리를 완료해야 한다. |
- 정기 배치: 일, 주, 월 단위 등 정해진 시점에 실행
- 이벤트성 배치: 특정 조건이 충족될 때 실행
- 온디맨드 배치: 사용자의 명시적 요구가 있을 때 실행
| 도구 | 특징 |
|---|---|
| 스프링 배치 | Spring Source와 Accenture가 함께 만든 Java 배치 프레임워크. Job, Step, ItemReader·ItemProcessor·ItemWriter 로 구성하며 대용량 처리, 트랜잭션, 재시작 기능 제공. 실행 시점은 외부 스케줄러와 조합 |
| Quartz | Java 기반 오픈소스 작업 스케줄링 라이브러리. Scheduler, Job, JobDetail, Trigger 로 구성 |
| cron | 유닉스·리눅스의 기본 작업 스케줄러. crontab에 "분 시 일 월 요일 명령" 형식으로 등록 |
# 분 시 일 월 요일 명령
0 2 * * * /home/app/backup.sh # 매일 02:00
*/10 * * * * /home/app/collect.sh # 10분마다
0 9 * * 1-5 /home/app/report.sh # 평일(월~금) 09:00
- 배치 프로그램 필수 요소 5가지(대용량 데이터, 자동화, 견고성, 안정성·신뢰성, 성능)를 쓴다.
- 배치 스케줄러 스프링 배치, Quartz, cron을 구분한다.
- crontab 표현식을 해석하는 문제가 나올 수 있다.