서버프로그램구현
- 애플리케이션 설계를 기반으로 프로그래밍 언어와 도구를 활용하여 배치 프로그램 구현 기술에 부합하는 배치 프로그램을 구현
- 목표 시스템을 구성하는 하위 시스템 간의 연동시 안정적이고 안전하게 동작할 수 있는 배치 프로그램을 구현
- 개발된 배치 프로그램의 테스트를 수행
배치 프로그램의 개념
- 사용자의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄처리하는 것
배치 프로그램의 필수 요소
- 대용량 데이터
- 대용량의 데이터를 처리할 수 있어야 함
- 자동화
- 심각한 오류 상황 외에는 사용자의 개입 없이 동작해야 함
- 견고함
- 유효하지 않은 데이터의 경우도 처리해서 비정상적인 동작 중단이 발생하지 않아야 함
- 안정성
- 어떤 문제가 생겼는지, 언제 발생했는지 등을 추적할 수 있어야 함
- 성능
- 주어진 시간 내에 처리를 완료할 수 있어야 하고, 동시에 동작하고 있는 다른 애플리케이션을 방해하지 말아야 함
배치 스케줄러의 개념
- 일괄처리(Batch Processing)를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
- 특정 업무를 원하는 시간에 처리할 수 있도록 지원하는 특성 때문에 잡 스케줄러 라고 함
- 종류
- Spring Batch
- Quartz
배치 스케줄러의 종류
-
Spring Batch 스프링 배치
- Spring Source사와 Accenture사가 2007년에 공동으로 개발한 오픈소스 프레임워크
- 아키텍처
- Run Tier
- 배치의 실행을 담당
- Job Tier
- XML로 기술된 Job내의 각 Step들을 순차적으로 실행
- Application Tier
- Job을 수행하는데 필요한 Item Reader, Item Writer, Item Processor 등의 컴포넌트로 구성
- 파일 혹은 데이터베이스로부터 읽고 쓰는 기능을 수행
- Data Tier
- Database, File, Queue 등 물리적 데이터소스와의 결합이 이루어지는 영역
- Run Tier
- 핵심 컴포넌트
- Job Repository
- Job Execution 관련 메타데이터를 저장하는 기반 컴포넌트
- Job Launcher
- Job Execution 실행하는 기반 컴포넌트
- JPA; Java Persistence API
- 페이징 기능 제공
- Job
- 배치 처리를 의미하는 애플리케이션 컴포넌트
- Step
- Job의 각 단계를 의미하며, Job은 일련의 연속된 Step으로 구성
- Item
- Data Source로부터 읽거나 저장하는 각 레코드
- Chunk
- 특정크기를 갖는 아이템 목록을 의미
- Item Reader
- 데이터소스로부터 아이템을 읽어 들이는 컴포넌트
- Item Processor
- Item Reader로 읽어 들인 아이템을 Item Writer를 사용해 저장하기 전에 처리하는 컴포넌트
- Item Writer
- Item Chunk를 데이터 소스에 저장하는 컴포넌트
- Job Repository
- 핵심기능
- 스프링 프레임워크 기반
- DI; Dependency Injection, AOP; Aspect Oriented Programming 및 다양한 엔터프라이즈 지원 기능 사용
- 자체 제공 컴포넌트
- 배치처리(데이터베이스나 파일로부터 데이터를 읽거나 쓰는 등) 시 공통적으로 필요한 컴포넌트를 제공
- 견고함과 안정성
- 선언적 생략과 처리 실패 후 재시도 설정을 제공
- 스프링 프레임워크 기반
-
Quartz 스케줄러
- Spring Framework에 플러그인되어 수행하는 Job과 실행스케줄을 정의하는 Trigger를 분리하여 유연성을 제공하는 오픈소스 스케줄러
- 구성요소
- Scheduler
- Quartz 실행환경을 관리하는 핵심개체
- Job
- 사용자가 수행할 작업을 정의하는 인터페이스로서 Trigger 개체를 이용하여 스케줄 할 수 있음
- JobDetail
- 작업명과 작업 그룹과 같은 수행할 Job에 대한 상세 정보를 정의하는 개체
- Trigger
- 정의한 Job 개체의 실행 스케줄을 정의하는 개체로서 Scheduler 개체에게 Job 수행 지점을 알려주는 개체
- Scheduler
- 유닉스의 크론 명령어와 유사한 오픈소스 배치 스케줄러
배치 프로그램 구현
1. 애플리케이션 설계를 기반으로 배치 프로그램 확인
- 프로그램 관리 대장을 확인
- 배치 설계서를 확인
- 프로그램 관리 대장의 ID와 일치하는 배치 설계를 확인
2. 애플리케이션 설계를 기반으로 배치 프로그램 구현
- 배치 프로그램을 구현하기 위한 SQL을 작성
- 배치 프로그램을 구현하기 위한 I/O 오브젝트(DTO; Data Transfer Object, VO; Value Object)를 정의
- 배치 프로그램을 구현하기 위한 데이터 접근 오브젝트(DAO; Data Access Object) 작성
- 배치 프로그램을 구현하기 위한 스케줄러 클래스를 작성
- 배치 설계서는 작성하지 않음