클라우드 자원 사용률 알람 서비스

수행기간 : 2024.09 ~ 2024.11 (3개월)

프로젝트 개요

_images/%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81-%EC%95%8C%EB%9E%8C-%EC%84%9C%EB%B9%84%EC%8A%A4%EA%B5%AC%EC%A1%B0.png

클라우드 자원 모니터링 시스템과 연동하여 클라우드 자원 사용률을 모니터링하고 알람을 발송하는 서비스 입니다.

알람 설정/관리 프로젝트 인 cloud-alarm 서버, 모니터링 시스템와 연결하고 메트릭을 수집하는 모니터링 서버 , 그리고 임계치 이상의 알람 발송 신호가 발생했을 때 알람을 발송하고 발송 내역을 관리하는 발송 관리 시스템 으로 구성되어 있습니다.

핵심 기능

  • 클라우드 자원의 CPU, 메모리, 스토리지, 네트워크 사용량에 대한 알람 설정

  • 모니터링 시스템 [1] 과의 연동

  • 모니터링 시스템으로 부터 발생하는 알람 신호 처리

  • 알람 발송 처리 (SMS, Email)

역할 및 기여

  • 시스템, 소프트웨어 아키텍처, DB 스키마 설계

  • 알람 설정 및 관리 시스템인 cloud-alarm 서버 구현

  • 네트워크 트래픽 수집 스케줄러 구현

  • 프로젝트 매니저

개발 환경

  • Language : Python 3.11

  • Framework : FastAPI

  • Library : Sqlalchemy, Alembic, Aspscheduler, Dependency injector

  • DB: MySql

  • MQ: Kafka

  • Monitoring System: Zabbix

아키텍처

_images/cloud-alarm-%EC%95%84%ED%82%A4%ED%83%9D%EC%B2%98.png
  • cloud-alarm 서버를 통해 알람 정보 등록/전송 프로세스 관리

  • 자원타입(인스턴스, 네트워크)에 맞는 모니터링 서버와 통신하며 알람 기능 제공

  • kafka 를 사용해 알람 메시지 발송 처리 비동기화

의존성 구조

_images/%EC%95%8C%EB%9E%8C-%EC%9D%98%EC%A1%B4%EC%84%B1-%EA%B7%B8%EB%9E%98%ED%94%84.png
  • Facade 패턴을 사용해 서비스 간 의존성을 최소화

  • 서비스 로직의 재사용성 향상

ERD

성과 및 결과

  • 서비스의 안정적 배포/운영

  • 모니터링, 알람 관리, 발송 관리를 분리한 시스템을 설계
    • 시스템 분리를 통해 유지보수 가능한 시스템 구축

    • 장애 전파 범위 최소화

    • 서비스 확장성 확보