jongkwan.dev
프로젝트 목록으로

모니터링 · 데이터 수집 · CI/CD 운영 인프라

전국 20곳+ 현장 원격 모니터링, 이상치 데이터 자동 수집, CI/CD·배포 표준화, GitHub–Slack–Notion 연동 웹훅

에이오팜·2023.08 - 2025.11·주도적 기획 및 구축
Prometheus
Grafana
FastAPI
Socket.IO
GitHub Actions
Docker
Kubernetes
Sentry

배경

전국 20곳 이상 현장에 납품된 온프레미스 장비의 상태를 원격에서 파악할 수 없어, 장애가 난 뒤에야 알게 되는 사후 대응 구조였다. AI 모델 개선에 필요한 이상치 데이터도 수동으로 수집하느라 누락이 잦았고, 수동 배포·이슈 트래킹 부재로 릴리스에서 휴먼 에러가 반복됐다. 개발 워크플로우 쪽에서도 GitHub PR이 Slack·Notion에 자동으로 반영되지 않아 리뷰 요청이 묻히는 일이 있었다.

시스템 구조

  • 모니터링 메트릭: 하드웨어 상태, 카메라 온도/FPS, CPU/GPU 연산량을 Prometheus가 수집하고 Grafana가 시각화. 임계값 초과 시 Slack으로 알린다.
  • 웹훅 독립 서비스: 자체 Django 앱(integrations + accounts)으로 구성. Kubernetes 매니페스트 3종(Django Deployment · Service · Celery Deployment)으로 2 replica 운영.
  • 이상치 수집 자동화: FastAPI + Socket.IO로 온프레미스 장비가 특이 데이터를 중앙 서버로 푸시한다.
  • 배포 표준: Docker Compose 기반 리소스 제한·로깅·헬스체크, Jira 이슈 트래킹.

해결 과정

모니터링 인프라. Prometheus + Grafana로 하드웨어 상태·카메라 온도/FPS·CPU/GPU 연산량 메트릭을 수집하는 대시보드를 만들었다. 임계값 초과 시 Slack 웹훅으로 알리고, Sentry 에러 추적과 구조화 로깅(JSON format)을 붙여 장애 징후를 사전에 감지한다.

데이터 수집 자동화. FastAPI + Socket.IO 수집 서버를 두고, 온프레미스 장비에서 이상치를 자동 감지해 중앙 서버로 전송하는 구조를 구성했다. 수동 수집 단계를 없애고, 장비에서 발생하는 시점과 저장 시점 간 지연을 최소화한다.

CI/CD와 배포 표준화. GitHub Actions에 lint와 자동 테스트 파이프라인을 붙였고, Docker Compose 기반 온프레미스 배포에 리소스 제한·로깅·헬스체크를 규격화했다. Jira로 이슈·릴리스 추적 체계를 세웠다.

개발 워크플로우 웹훅. GitHub PR 이벤트를 받아 Slack 알림과 Notion 태스크로 자동 변환하는 3플랫폼 연동 서비스를 별도 Django 앱으로 개발했다. HMAC-SHA256 서명 검증으로 GitHub 페이로드를 인증하고, Celery 비동기 처리로 응답 지연 없이 변환한다. 이메일·이름 기반 크로스 플랫폼 사용자 자동 매핑을 구현해 리뷰어 계정이 플랫폼별로 달라도 알림이 정확히 전달된다. Kubernetes 2 replica로 프로덕션 배포.

성과

  • 전국 20곳 이상 장비 상태를 원격에서 실시간 모니터링, 장애 대응이 사후적 → 선제적으로 전환.
  • 이상치 데이터 자동 수집으로 AI 모델 학습 데이터 품질을 보강.
  • GitHub Actions lint·테스트, Docker Compose 배포 표준화로 릴리스 휴먼 에러 감소, Jira 기반 이슈 관리 체계 수립.
  • GitHub PR → Slack + Notion 자동 연동, HMAC-SHA256 검증 + Celery 비동기 + K8s 2 replica 운영.
  • Kubernetes 매니페스트 3종으로 웹훅 서비스 배포 파이프라인 구성.