카테고리 없음

전자정부 표준프레임워크 시리즈 12화 – 배치 모듈의 구조와 활용 전략: Quartz 기반 스케줄링 시스템 이해하기

B컷개발자 2025. 6. 9. 19:34
728x90

전자정부 표준프레임워크의 배치 모듈 구조와 Quartz 스케줄링 프레임워크의 연계 방식, 배치 개발 및 운영 관리 전략을 실무 관점에서 정리합니다.

 

1. 공공 프로젝트에서 배치는 왜 중요한가?

전자정부 시스템에서 배치 처리란, 다음과 같은 시간 기반 반복 작업 또는 비동기 대용량 처리 로직을 의미합니다:

  • 매일 자정에 통계 데이터 집계
  • 주간 보고서 자동 생성 및 메일 발송
  • 대용량 민원 신청 데이터 정리
  • 외부 기관과의 파일 기반 연계

공공 시스템은 실시간 처리보다 정해진 시간에 자동 처리되는 업무 비율이 더 높습니다.

따라서 전자정부 표준프레임워크에서도 Quartz 기반 배치 모듈을 통해 표준화된 배치 시스템을 제공하고 있습니다.


2. eGovFrame의 배치 시스템 아키텍처

전자정부 표준프레임워크에서 배치 처리는 다음과 같은 아키텍처 구조를 따릅니다.

[1] 배치 Job Class 정의 (Java)  
   ↓  
[2] Quartz Scheduler에 등록  
   ↓  
[3] 트리거(시간 조건)에 따라 실행  
   ↓  
[4] 로그/결과 저장 → DB or 로그파일  

✅ 배치 전용 모듈은 egovframework.rte.fdl.quartz 또는 Spring Batch 연동 구조로 제공됩니다.


3. Quartz란 무엇인가?

Quartz는 Java 기반의 오픈소스 스케줄링 프레임워크로,
전자정부 프레임워크는 이를 표준 스케줄러로 채택하고 있습니다.

주요 특징:

  • Cron 표현식 기반의 정밀한 시간 제어
  • 트리거 기반 작업 실행
  • Job 클래스의 재사용 가능
  • DB 기반 Job 등록 및 관리 가능
  • Thread Pool 기반 병렬 처리 지원

4. 기본 구성 요소

전자정부 프레임워크에서 Quartz 기반 배치는 아래 4가지로 구성됩니다.

구성 요소 설명

Job 실행할 작업 로직이 들어있는 클래스
Trigger 실행 주기를 정의하는 시간 조건
Scheduler Job과 Trigger를 관리하고 실행하는 엔진
JobDetail 어떤 Job이 어떤 Trigger와 연결되는지를 정의

5. 예제 – 매일 0시에 파일 정리 작업 실행

1) Job 클래스 작성

public class FileCleanupJob implements Job {
    public void execute(JobExecutionContext context) throws JobExecutionException {
        // 파일 정리 로직
        System.out.println("불필요한 파일 정리 수행");
    }
}

2) Spring 설정(XML 기반)

<bean id="fileCleanupJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    <property name="jobClass" value="egovframework.example.batch.FileCleanupJob"/>
</bean>

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="fileCleanupJob"/>
    <property name="cronExpression" value="0 0 0 * * ?" />
</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <ref bean="cronTrigger"/>
        </list>
    </property>
</bean>

6. 실무 운영 전략

A. Job 클래스 설계 기준

  • 업무 로직은 서비스 클래스에 위임
  • Job 클래스는 단순 실행 진입점만 유지
  • DB 연동, 외부 API 호출, 파일 처리 시 예외 처리 로직 필수

B. 로그 관리

  • 각 Job 단위로 실행 로그 기록 (성공/실패 구분, 실행 시간 기록)
  • Job 실행 결과를 DB 테이블로 저장 (BATCH_LOG_TB)
  • 이메일 알림 또는 Slack 연동 등 실시간 알림 연계도 고려

C. Job 실행 모니터링

  • 관리 UI 구축 가능 (Quartz API로 Job 상태 조회)
  • 혹은 관리자 페이지에 배치 모듈 상태 정보 노출
  • 긴급 수동 실행 기능을 위한 API 또는 버튼 제공

7. 배치 운영 시 고려사항

항목 고려 내용

실행 실패 대응 Retry 로직 or 실패 알림 필수
Job 병렬 실행 동시성 고려 (DB 락, Thread 충돌 등)
리소스 사용량 메모리, IO 부하 등 점검 후 실행 시간대 분산
시스템 점검 시간 서버 점검 중 배치 실행되지 않도록 설정 필요

8. 감리/보안 대응 포인트

  • 배치 실행 이력 보관: 언제, 누가, 어떤 Job이 실행되었는지 로그 저장
  • 스케줄 변경 관리: 운영 Job의 Cron 표현식 변경 시 승인 프로세스 필요
  • 보안 로그 연계: 파일 처리 Job은 로그/감사 시스템과 연동 권장
  • 예외 처리 및 재처리 전략 문서화: 감리 대응 시 핵심 항목

결론 – 배치는 시스템의 지속 가능성과 자동화를 좌우하는 핵심 기능이다

전자정부 표준프레임워크의 배치 구조는 단순한 기능 실행이 아니라
업무 자동화, 데이터 정합성 유지, 운영 효율성 확보의 중추적인 역할을 합니다.

Quartz 기반 구조를 잘 이해하고

  • 업무별 Job 구조화
  • 실패 대응 설계
  • Job 통제 체계 구축
    까지 갖춘다면,
    공공 시스템의 품질과 운영 안정성은 비약적으로 향상될 수 있습니다.
728x90