Light Blue Pointer
본문 바로가기
Others/자격증 공부

01-04 배치 프로그램 구현하기

by Greedy 2021. 7. 28.

01 배치 프로그램 구현

1) 배치 프로그램의 이해

배치 프로그램이란 사용자와의 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 것이다.

 

배치 프로그램의 필수 요소

요소 설명
대용량 데이터 대용량의 데이터를 처리할 수 있어야 한다
자동화 심각한 오류 상황 외에는 사용자의 개입 없이 동작해야 한다
견고함 유효하지 않은 데이터의 경우도 처리해서 비정상적인 동작 중단이 발생하지 않아야 한다
안정성 어떤 문제가 생겼는지, 언제 발생했는지 등을 추적할 수 있어야 한다
성능 주어진 시간 내에 처리를 완료할 수 있어야 하고, 동시에 동작하고 있는 다른 애플리케이션을 방해햐지 말아야 한다

2) 배치 스케쥴러

배치 스케쥴러는 일괄 처리를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구이다.

 

3) 배치 스케쥴러의 종류

Spring Batch

스프링 배치의 컴포넌트 

컴포넌트 설명
Job Repository Job Execution관련 메타데이터를 저장하는 기반 컴포넌트이다
Job Launcher Job Execution을 실행하는 기반 컴포넌트이다
JPA 페이징 기능을 제공한다
Job 배치 처리를 의미하는 애플리케이션 컴포넌트이다
Step Job의 각 단계를 의미하며, 일련의 연속된 Step으로 구성된다
Item Data resource로부터 읽거나 Data Source 로 저장하는 각 레코드를의미한다
Chunk 특정 크기를 갖는 아이템 목록을 의미한다
Item Reader 데이터 소스로부터 아이템을 읽어 들이는 컴포넌트이다
Item Processor Item Reader로 읽어들인 아이템을 Item Writer를 사용해 저장하기 전에 처리하는 컴포넌트이다
Item Writer Item Chunk를 데이터 소스에 저장하는 컴포넌트이다

스프링 배치의 핵심 기능

기능 설명
스프링 프레임워크기반 스프링의 DI,AOP 및 다양한 엔터프라이즈 지원 기능을 사용한다
자체 제공 컴포넌트 배치 처리(데이터베이스나 파일로부터 데이터를 읽거나 쓰는 등) 시 공통적으로 필요한 컴포넌트를 제공한다
견고함과 안정성 선언적 생략과 처리 실패 후 재시도 설정을 제공한다

Quartz Schedular

Quartz 스케쥴러란 Spring Framework에 플러그인 되어 수행하는 Job과 실행 스케쥴을 정의하는 Trigger를 분리하여 유연성을 제공하는 오픈소스 스케쥴러이다

 

Quartz 스케쥴러의 구성 요소

구성 요소 설명
Schedule Quartz실행 환경을 관리하는 핵심 개체이다
Job 사용자가 수행할 작업을 정의하는 인터페이스로서 Trigger개체를 이용하여 스케쥴할 수 있다
JobDetail 작업명과 작업 그룹과 같은 수행할 Job에 대한 상세 정보를 정의하는개체이다
Trigger 작업한 Job개체의 실행 스케쥴을 정의하는 개체로서 Schedule 개체에게 Job 수행 시점을 알려주는 개체이다

4) 배치 프로그램 구현 수행하기

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

프로그램 관리 대장을 확인

배치 설계서를 확인

 

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

배치 프로그램을 구현하기 위한 SQL을 작성한다

배치 프로그램을 구현하기 위해 I/O 오브젝트 (DTO/VO)를 정의한다

배치 프로그램을 구현하기 위한 데이터 접근 오브젝트 (DAO)를 작성한다

배치 프로그램을 구현하기 위한 스케줄러 클래스를 작성한다

 

위 예시는 @Scheduled 어노테이션 구문 지정으로 매일 1시에 배치 스케쥴이 실행되게 구현한 예시이다

 

Cron표현식 (Expression)

필드명 허용값(범위) 허용된 특수 문자
Seconds 0~59 .-*/
Minutes 0~59 .-*/
Hours 0~23 .-*/
Day-of-month 1~31 .-*?/LW
Months 1~12 / JAN~DEC .-*/
Day-of-Week 1~7 / SUN~SAT .-*?/L#
Year(optional) Empty, 1970~2099 .-*/

 

02 배치 프로그램 테스트

1) 디버그와 디버거

디버그

디버그 혹은 디버깅은 컴퓨터 프로그램의 논리적인 오류(버그)를 찾아내는 과정을 말한다

디버거

디버거는 디버그를 돕는 도구이다. 디버거는 디버깅을 하려는 코드에 중단점을 지정하여 프로그램 실행을 중단하고, 코드를 단계적으로 실행하여 저장된 값을 확인할 수 있도록 지원한다.

 

2) 디버거 사용법

디버그 뷰

중단점 설정

toggle breakpoint

디버그 모드에서의 스텝 단위 진행

디버그 모드로 실행 중 지정된 중단점에 오면 디버거에 의해 중단되고 라인 단위로 실행이 가능해진다

 

3) 배치프로그램 테스트 수행하기

배치프로그램 주기 변경 -> 배치 스케쥴 주기를 테스트가 가능한 주기로 변경하여 로그에 정상적으로 출력되는지 확인

배치프로그램을 디버깅 -> 정상적으로 동작하는지 검증

배치프로그램의 로그를 확인

목적 테이블에서 정상적으로 배치 프로그램이 실행되었는지 확인

배치프로그램이 정상적으로 실행되지 않았을 경우 오류를 확인

'Others > 자격증 공부' 카테고리의 다른 글

02-01 기본 문법 활용하기  (0) 2021.07.29
02-01 프로그래밍 언어 활용  (0) 2021.07.29
01-03 서버 프로그램 구현하기  (0) 2021.07.28
01-02 공통 모듈 구현하기  (0) 2021.07.27
01 서버 프로그램 구현  (0) 2021.07.20