![post-thumbnail](https://velog.velcdn.com/images/alpaka206/post/d88af0a9-990e-44cf-8e81-d3f8b7e943a6/image.png)
배치 프로그램(Batch Program)의 개요
- 배치 프로그램은 사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것을 의미한다.
- 배치 프로그램이 자동으로 수행되는 주기에 따라 정기 배치, 이벤트성 배치, On-Demand 배치로 구분된다.
- 정기 배치: 일, 주, 월과 같이 정해진 기간에 정기적으로 수행된다.
- 이벤트성 배치: 특정 조건을 설정해두고 조건이 충족될 때만 수행된다.
- On-Demand 배치: 사용자 요청 시 수행된다.
- 배치 프로그램이 갖추어야 하는 필수 요소는 다음과 같다.
- 대용량 데이터: 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리가 가능해야 한다.
- 자동화: 심각한 오류가 발생하는 상황을 제외하고는 사용자의 개입 없이 수행되어야 한다.
- 견고성: 잘못된 데이터나 데이터 중복 등의 상황으로 중단되는 일 없이 수행되어야 한다.
- 안정성/신뢰성: 오류가 발생하면 오류의 발생 위치, 시간 등을 추적할 수 있어야 한다.
- 성능: 다른 응용 프로그램의 수행을 방해하지 않아야 하고, 지정된 시간 내에 처리가 완료되어야 한다.
배치 스케줄러(Batch Scheduler)
- 배치 스케줄러는 일괄 처리(Batch Processing) 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구이다.
- 배치 스케줄러는 특정 업무(Job)를 원하는 시간에 처리할 수 있도록 지원한다는 특성 때문에 잡 스케줄러(Job Scheduler)라고도 불린다.
- 주로 사용되는 배치 스케줄러에는 스프링 배치, Quartz 등이 있다.
스프링 배치(Spring Batch)
- Spring Source사와 Accenture사가 2007년 공동 개발한 오픈 소스 프레임워크이다.
- 스프링 프레임워크의 특성을 그대로 가져와 스프링이 가지고 있는 다양한 기능들을 모두 사용할 수 있다.
- 데이터베이스나 파일의 데이터를 교환하는데 필요한 컴포넌트들을 제공한다.
- 로그 관리, 추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작 등의 다양한 기능을 제공한다.
- 스프링 배치의 주요 구성 요소와 역할
- Job: 수행할 작업 정의
- Job Launcher: 실행을 위한 인터페이스
- Step: Job 처리를 위한 제어 정보
- Job Repository: Step의 제어 정보를 포함하여 작업 실행을 위한 모든 정보 저장
Quartz
- 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위한 다양한 기능을 제공하는 오픈 소스 라이브러리이다.
- 수행할 작업과 수행 시간을 관리하는 요소들을 분리하여 일괄 처리 작업에 유연성 을 제공한다.
- Quartz의 주요 구성 요소와 역할
- Scheduler: 실행환경 관리
- Job: 수행할 작업 정의
- JobDetail: Job의 상세 정보
- Trigger: Job 실행 스케줄 정의