코딩관계론

클라우드 기반 실시간 알람 시스템 설계에 대한 고찰 본문

개발/SPOT

클라우드 기반 실시간 알람 시스템 설계에 대한 고찰

개발자_티모 2024. 3. 24. 17:29
반응형

📌 설계의 고찰

기존 알람 시스템은 각 공장마다 독립된 서버에 개별적으로 배포되어 있었습니다. 당시 최대 부하 시점에도 알람 건수는 20~30건 수준이었으며, 알람 발송은 단일 SMS 대행사만을 이용했습니다. 따라서 복잡한 시스템 설계가 요구되지 않았습니다.

 

그러나 회사가 클라우드 서비스를 도입해 여러 공장을 통합적으로 관제하게 되면서 알람 건수는 하루 최대 100건을 초과하게 되었습니다. 또한, 기존의 SMS 대행사 외에 텔레그램과 같은 3rd-party 플랫폼과의 연동이 추가적으로 필요해졌으며, 이로 인해 알람 시스템 설계가 매우 중요해졌습니다.

 

고객사의 요구사항은 다음과 같습니다.

  • 긴급 알람(실시간 환자 감지, 누수 감지, 화재 감지 등)은 소프트 실시간 처리
  • Cron 작업 알람은 약간의 지연 허용

📌 기존 시스템 설계

기존 시스템의 동작 방식은 다음과 같습니다.

  • Cron Job & Real-time 알람 서비스
    • 알람 내용을 구성하여 알람 서버가 제공한 API 호출
  • 알람 서버
    • 수신한 요청을 제3자 서비스(SMS 대행사 등)에 전달 가능한 알람 페이로드로 생성 및 전송


📌 기존 설계의 문제점

  • 단일 장애 지점(SPOF)
    • 하나의 서버에 의존하여, 서버 장애 발생 시 전체 서비스가 중단되는 문제
  • 성능 병목 문제
    • 알람 메시지 발송 시 HTML 페이지를 이미지로 변환하는 자원 집약적 작업으로 인해 서버 과부화 우려
  • 알람 소실 가능성
    • SMS 대행사 전송 후 네트워크 문제 등으로 성공 응답을 못 받으면 사용자에게 알람 전달 실패 가능성 존재

이러한 문제를 해결하기 위해 여러 자료를 조사하였으며, 특히 『가상 면접 사례로 배우는 대규모 시스템 설계 기초』를 참고하여 개선안을 마련했습니다.


📌 개선된 시스템 설계

개선된 시스템의 핵심 변경 사항은 다음과 같습니다.

  • 메시지 큐(Message Queue) 도입
  • 작업 서버(Worker Server) 추가

🚩 메시지 큐 도입의 장점

  • 비동기 통신으로 독립성 확보
    • API 방식의 동기적 통신 대비, 메시지 큐 방식은 송신자가 큐에 메시지를 넣고 바로 다음 작업을 수행 가능
    • 수신자는 자신에게 맞는 속도로 메시지 처리 가능
  • 느슨한 결합(Loose Coupling)
    • 송신자와 수신자의 직접적인 의존성 감소

🚩 작업 서버 도입의 장점

  • 부하 분산
    • 특정 서버에 작업이 집중되지 않아 전체 성능 향상
  • 장애 대응 능력 향상
    • 다수 작업 서버 운영으로 SPOF 문제 완화
  • 확장성 향상
    • 필요 시 손쉽게 서버 추가 가능, 사용량 증가나 리소스 부족 상황에 빠른 대처 가능

📌 알람 전송 안정성 보장 메커니즘

알람 전송 시스템에서 가장 중요한 요구 사항은 알람 소실 방지입니다. 알람 발송 순서 변경이나 지연은 허용하지만, 알람 자체가 사라져서는 안 됩니다. 이를 위해 다음과 같은 재시도 메커니즘을 구현했습니다.

  • 작업 서버가 메시지 큐에서 작업 획득 후, DB에 페이로드 저장
  • 페이로드를 3rd-party 플랫폼에 맞춰 재구성 후 대행사로 발송
  • 성공 응답 시, DB에 기록 후 메시지 큐에서 제거
  • 실패 응답 또는 무응답 시 메시지를 실패 큐로 이동
  • 실패 큐의 메시지는 별도 프로세스가 DB에 실패 기록 후 메시지 큐로 재전송
  • 지정된 Retry 횟수까지 반복 시도 후, 실패 지속 시 개발자에게 알람 발송


📌 개선 성과

  • 📈 처리 속도 향상: 긴급 알람 처리 속도 50% 이상 개선
  • 📉 알람 소실률 감소: 재시도 메커니즘으로 소실률 0% 달성
  • 🛡️ 시스템 안정성 향상: SPOF 문제 해결로 시스템 가용성 99.9% 이상 유지
반응형