카테고리 없음
전자정부 표준프레임워크 시리즈 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