자동화 배치 스케쥴러 시스템

기업 내 다양한 시스템의 배치 작업을 통합 관리하고 모니터링할 수 있는 자동화 스케쥴러 시스템으로, 작업 의존성 관리, 실패 시 자동 복구, 실시간 모니터링 기능을 제공합니다.

프로젝트 개요 및 기술 스택

자동화 배치 관리 시스템

Spring Batch + Quartz + React

기업 내 여러 시스템에서 실행되는 다양한 배치 작업을 통합적으로 관리하고 모니터링하기 위한 시스템입니다. 기존 시스템에서는 배치 작업이 개별 서버에 분산되어 있어 관리의 어려움과 장애 발생 시 대응 지연 문제가 있었습니다.

  • 백엔드: Spring Boot, Spring Batch, Quartz Scheduler
  • 프론트엔드: React, Material-UI, Redux
  • 데이터베이스: PostgreSQL (작업 메타데이터 관리)
  • 모니터링: Prometheus, Grafana
  • CI/CD: Jenkins, Docker, Kubernetes

작업 스케쥴링 및 의존성 관리

복잡한 배치 작업 간의 의존성을 시각적으로 정의하고 관리할 수 있는 기능을 제공합니다. 선행 작업이 완료되어야 후속 작업이 시작되는 워크플로우를 구성하여 데이터 정합성을 유지하고 효율적인 작업 처리를 가능하게 합니다.

  • DAG(Directed Acyclic Graph) 기반 작업 의존성 관리
  • Cron 표현식을 통한 유연한 스케쥴 설정
  • 작업 간 데이터 전달 메커니즘
  • 조건부 실행 규칙 설정
  • 우선순위 기반 작업 실행 관리

워크플로우 관리

의존성 기반 작업 흐름 제어

실시간 모니터링 및 알림 시스템

대시보드 모니터링

실시간 작업 상태 및 리소스 모니터링

모든 배치 작업의 실행 상태, 진행률, 성공/실패 여부를 실시간으로 모니터링할 수 있는 대시보드를 제공합니다. 문제 발생 시 즉시 관리자에게 알림을 보내고, 자동 복구 메커니즘을 통해 신속하게 대응할 수 있습니다.

  • 실시간 작업 진행 상황 시각화
  • 다양한 채널(이메일, SMS, 메신저) 통한 알림
  • 임계치 기반 알림 규칙 설정
  • 작업별 리소스 사용량 모니터링
  • 장애 원인 분석을 위한 로그 통합 관리

장애 대응 및 자동 복구 시스템

작업 실패 시 정의된 정책에 따라 자동으로 재시도하거나 대체 작업을 실행하는 자동 복구 메커니즘을 구현했습니다. 이를 통해 야간 배치 작업의 안정성을 크게 향상시키고, 관리자의 야간 비상 대응 필요성을 최소화했습니다.

  • 작업별 맞춤형 재시도 정책 설정
  • 단계적 에스컬레이션 알림 체계
  • 장애 상황별 자동 대응 시나리오 관리
  • 복구 작업 우선순위 조정 기능
  • 장애 이력 관리 및 분석 리포트 제공

자동 복구 시스템

장애 감지 및 자동 대응

직관적인 관리자 인터페이스

관리자 콘솔

작업 관리 및 설정 인터페이스

기술적 지식이 없는 운영 담당자도 쉽게 배치 작업을 관리할 수 있는 직관적인 웹 인터페이스를 제공합니다. 작업 생성, 수정, 활성화/비활성화, 수동 실행 등 다양한 관리 기능을 드래그 앤 드롭 방식의 사용자 친화적 UI로 구현했습니다.

  • 드래그 앤 드롭 방식의 워크플로우 설계 도구
  • 작업 파라미터 및 스케쥴 설정 인터페이스
  • 권한 기반 사용자 접근 제어
  • 작업 수동 실행 및 중지 기능
  • 통합 검색 및 필터링 기능

프로젝트 성과 및 개선 효과

정량적 성과

  • 장애 대응 시간 90% 단축: 평균 대응 시간 30분에서 3분으로 감소
  • 운영 비용 절감: 야간 배치 모니터링 인력 50% 감축
  • 배치 작업 실패율: 월 평균 15건에서 2건으로 감소 (87% 개선)
  • 업무 효율성: 작업 설정 및 수정 시간 75% 단축

정성적 성과

  • 시스템 안정성 향상: 장애 발생 시 자동 복구로 서비스 중단 최소화
  • 운영 투명성 증가: 모든 배치 작업의 상태와 이력을 통합적으로 가시화
  • 운영자 만족도 상승: 사용자 친화적 인터페이스로 작업 관리 용이성 증가
  • 확장성 개선: 신규 배치 작업 추가 및 변경이 용이한 아키텍처 구현

기술적 도전과 해결 방법

분산 환경에서의 작업 동기화 문제

여러 서버에서 실행되는 작업 간의 동기화 및 단일 장애점 문제를 해결하기 위해 Quartz Scheduler의 클러스터링 기능과 분산 락 메커니즘을 구현했습니다. 이를 통해 고가용성을 유지하면서도 작업 간 의존성 충돌 문제를 해결했습니다.

복잡한 작업 의존성 관리

수백 개의 작업 간 복잡한 의존성을 효율적으로 관리하기 위해 DAG(Directed Acyclic Graph) 알고리즘을 적용하고, 의존성 순환 감지 및 최적 실행 경로 계산 기능을 구현했습니다. 이를 통해 작업 간 데드락 발생을 원천적으로 방지했습니다.

대용량 로그 처리 및 분석

수많은 배치 작업에서 발생하는 대용량 로그를 효율적으로 수집하고 분석하기 위해 ELK 스택(Elasticsearch, Logstash, Kibana)을 도입하고, 로그 패턴 분석을 통한 이상 징후 자동 감지 알고리즘을 개발했습니다.

담당 역할 및 기여

  • 아키텍처 설계: 전체 시스템 아키텍처 설계 및 기술 스택 선정 주도
  • 핵심 모듈 개발: 작업 의존성 관리 엔진 및 자동 복구 메커니즘 구현
  • 프론트엔드 UI/UX: React 기반 관리자 인터페이스 및 대시보드 개발
  • 성능 최적화: 대용량 처리 시 발생하는 병목 현상 분석 및 해결
  • 지식 전파: 팀 내 Spring Batch 및 Quartz 관련 기술 세미나 진행