AI Briefing

AOP와 Redis로 구축한 실시간 예외 알림 시스템

·2025.02.24 13:27

5분 배치 알림을 AOP와 Redis 기반 실시간 예외 알림으로 바꿨다.

기존 예외 알림은 5분 주기 배치와 DB 조회에 의존해 실시간성이 떨어졌고, 스케줄러·배치 서버·DB 중 하나만 불안정해도 알림이 끊기는 문제가 있었다. 같은 오류가 오래 지속되면 알림이 반복 폭주하는 한계도 컸다.

이를 해결하기 위해 AOP + Redis 기반의 실시간 알림 시스템을 만들었다. 예외가 발생하면 먼저 Redis에서 동일 예외 여부를 확인하고, 새 예외면 TTL 5분으로 저장해 알림을 보낸다. 이미 같은 예외가 있으면 TTL 30분으로 갱신하고 발생 건수를 누적하며, 5회 초과부터는 불필요한 Slack 알림을 막는다.

장애 대응은 책임 연쇄 패턴(Chain of Responsibility) 으로 설계했다.

  • Redis 정상, RDB 정상: Redis에서 예외 이력을 관리하고 주기적으로 RDB로 동기화한다.
  • Redis 장애, RDB 정상: 처리 책임을 RDB로 넘겨 최근 30분 내 중복 여부를 판단한다.
  • Redis와 RDB 모두 장애: 비교 기준이 없으므로 예외 발생 시 무조건 알림을 보낸다.

Redis에 쌓인 예외 이력은 WriteBack 패턴으로 RDB에 동기화한다. RDB는 Redis 장애 시 중복 알림을 방지하는 안전장치이자, 이후 장애 분석과 시스템 개선을 위한 기록 저장소 역할을 한다.

동기화 과정에서 Redis SCAN을 그대로 쓰면 rehashing 상황에서 중복 반환이 생기고, 대량 키 순회로 응답 지연이 발생할 수 있었다. 그래서 변경 대상 키들을 별도 Redis 키의 값으로 관리하는 방식으로 바꿔, 읽기 성능과 다른 클라이언트 영향도를 줄였다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.