05 / 07
설계 포인트
Fail-safe 멀티채널, ServiceLoader 확장 구조, 실시간+배치 혼합, 설정 기반 아키텍처
Design Points
주요 설계 포인트
AlertHub의 핵심 설계 원칙은 장애 대응의 신뢰성, 운영 유연성, 확장 용이성이다.
멀티채널 Fail-safe 알림 설계
단일 채널에 의존하면 해당 채널 장애 시 알림 자체가 실패한다. 전화 + SMS + Slack + Email을 동시에 발송하여 어느 한 채널이 실패해도 나머지 채널로 알림이 전달되는 구조를 설계했다.
Fail-safe Structure
AlertHub 병렬 발송
전화
성공
SMS
실패
Slack
성공
성공
SMS 실패에도 전화/Slack/Email로 알림 전달 -- 장애 인지 보장
설정 기반 아키텍처
YAML 기반으로 서비스, 알림, 스케줄을 분리하여 운영자가 코드 수정 없이 제어할 수 있다.
Service 설정
- - 모니터링 대상 URL
- - 파일 경로
- - 점검 주기
Alert 설정
- - 알림 채널 선택
- - 수신자 목록
- - 알림 조건
Schedule 설정
- - Cron 표현식
- - 실행 시간대
- - 반복 주기
모든 설정은 YAML 파일에서 관리 -- 배포 없이 즉시 반영
ServiceLoader 확장 구조
ServiceLoader + ServiceRegistry 패턴과 Reflection 기반 서비스 생성을 적용하여, 새로운 모니터를 추가할 때 기존 코드 변경 없이 확장할 수 있다.
Extension Architecture
ServiceRegistry
Reflection 기반 서비스 인스턴스 생성
HTTP Monitor
Folder Monitor
Batch Runner
새 모니터 (확장)
YAML에 서비스 정의 추가만으로 새 모니터 등록 가능
실시간 + 배치 혼합 구조
다양한 장애 패턴에 대응하기 위해 실시간 이벤트 감지와 주기적 배치 점검을 혼합 운영한다.
실시간 (Event-driven)
FileEventRunner
파일 시스템 변경 이벤트 즉시 감지
Webhook 수신
외부 시스템 이벤트 수신
배치 (Scheduled)
Quartz Scheduler
Cron 기반 주기적 점검
일일 리포트
매일 상태 요약 발송