본문 바로가기

자격증/정보처리기사 3과목

3-4강. 서버프로그램 구현-배치 프로그램 구현

[ 목차 ]

 

1. 배치 프로그램

1) 사용자와의 상호 작용 없이 일련의 작업을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄처리하는 것

2) 필수요소

  1] 대용량 데이터 : 대용량 데이터 처리 가능해야

  2] 자동화 : 심각한 오류 외 사용자 개입 없이 동작해야

  3] 견고함 : 유효하지 않은 데이터의 경우도 처리해서 비정상적 동작 중단이 발생하지 않아야

  4] 안정성 : 어떤 문제, 언제 발생했는지 주적 가능해야

  5] 성능 : 주어진 시간 내 처리가 가능하고 동시에 동작하는 다른 애플리케이션을 방해하지 않아야(주로 야간수행)

배치 프로그램 자동 수행 주기에 따른 분류
1) 정기 배치 : 정해진 기간에 정기적으로 수행
2) 이벤트성 배치 : 특정 조건을 설정하고 충족될 때 수행
3) ON-DEMAND 배치 : 사용자 요청에 의해 수행

2. 배치 스케줄러 = 잡 스케줄러

1) 일괄처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구

2) 스프링 배치 

  1] 스프링 소스와 엑센츄어사의 공동작업으로 만든 배치기반 오픈소스 프레임워크

  2] 청크 지향 처리

  3] 스프링 프레임워크의 특성을 그대로 가져와 스프링 기능 모두 사용 가능

  4] 데이터베이스나 파일의 데이터를 교환하는데 필요한 컴포넌트들을 제공

  5] 실행 관리(트랜잭션 관리, 작업 재시작) 기능과 관리(로그, 추적, 작업 처리 통계, 모니터링) 기능 제공

스프링 배치의 핵심 컴포넌트
1) job : 수행할 배치 작업 정의
2) step : job의 각 단계
3) JPA : 페이징 기능 제공 (프로그램을 한 번에 처리할 수 있는 적당한 페이지로 분할하는 것)
4) job repository : job execution 관련 메타데이터를 저장하는 기반 컴포넌트(step의 제어 정보를 포함하여 작업 실행을 위한 모든 정보를 저장)
5) job launcher : 실행을 위한 인터페이스
6) item : 데이터 소스로부터 읽거나 저장하는 각 레코드
7) 청크 : 특정 크리를 갖는 아이템 목록으로 배치에서 한번에 트랜잭션으로 처리할 단위(페이징은 한번에 조회)
8) item reader, processor, writer


스프링배치의 핵심 기능
1) 스프링 프레임워크 기반 : 스프링의 DI, AOP 등 다양한 엔터프라이즈 지원 기능을 사용
2) 자체 제공 컴포넌트 : 공통적으로 필요한 컴포넌트를 제공
3) 견고함과 안정성 : 생략, 처리 실패 후 재시도 설정을 제공

IOC : 메소드나 객체의 호출작업을 개발자가 아닌 외부에서 결정하는 것
DI : 제어의 역행이 일어날 때 스프링이 내부에 잇는 개체들 간의 관계를 관리할 대 사용하는 기법
AOP : 횡단 관심사를 모듈로 분리하는 프로그래밍의 패러다임

3. 쿼츠 스케줄러 = 스프링 쿼츠

1) 스프링 프레임워크에 플러그인되어 수행하는 잡과 실행 스케줄을 정의하는 트리거를 분리해 유연성을 제공하는 오픈소스 스케줄러

2) 쿼츠 스케줄러 : 스프링 프레임워크로 개발되는 응용 프로그램들의 일괄 처리를 위한 다양한 기능을 제공, 수행할 작업과 수행 시간을 관리하는 요소를 분리해 일괄 처리 작업에 유연성을 제공

3) 쿼츠 스케줄러 주요 구성 요소 및 역할

  1] 스케줄러 : 실행 환경 관리

  2] 잡 : 수행할 작업 정의

  3] 잡디테일 : 잡의 상세정보

  4] 트리거 : 잡의 실행 스케줄 정의

 

4. 배치 프로그램 구현

1) 애플리케이션 설계 기반으로 배치 프로그램을 확인

  1] 프로그램 관리 대장 확인

  2] 배치 설계서 확인

2) 프로그램 관리 대장의 ID와 일치하는 배치 설계 확인

3) 애플리케이션 설계를 기반으로 배치 프로그램 구현

  1] SQL 작성

  2] I/O 오브젝트를 정의

  3] 데이터 접근 오브젝트를 작성

  4] 스케줄러 클래스 작성