클라우드 자원 사용률 알람 서비스 ================================ **수행기간 : 2024.09 ~ 2024.11 (3개월)** 프로젝트 개요 ------------- .. image:: _static/cloud-alarm/모니터링-알람-서비스구조.png :width: 800px :align: center **클라우드 자원 모니터링 시스템과 연동하여 클라우드 자원 사용률을 모니터링하고 알람을 발송하는 서비스 입니다.** 알람 설정/관리 프로젝트 인 ``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`` 아키텍처 -------- .. image:: _static/cloud-alarm/cloud-alarm-아키택처.png :align: center :width: 800px - ``cloud-alarm`` 서버를 통해 알람 정보 등록/전송 프로세스 관리 - 자원타입(``인스턴스``, ``네트워크``)에 맞는 모니터링 서버와 통신하며 알람 기능 제공 - kafka 를 사용해 알람 메시지 발송 처리 비동기화 의존성 구조 ----------- .. image:: _static/cloud-alarm/알람-의존성-그래프.png :align: center :width: 800px - ``Facade`` 패턴을 사용해 서비스 간 의존성을 최소화 - 서비스 로직의 재사용성 향상 ERD --- .. image:: _static/cloud-alarm/알람-db-erd.png :align: center :width: 800px 성과 및 결과 ------------ - 서비스의 안정적 배포/운영 - 모니터링, 알람 관리, 발송 관리를 분리한 시스템을 설계 * 시스템 분리를 통해 유지보수 가능한 시스템 구축 * 장애 전파 범위 최소화 * 서비스 확장성 확보 .. [1] Zabbix, TMS: 모니터링 시스템