SIGNALCRAFT

SIGNAL CRAFT 오버뷰

VibeHub 2025. 10. 11. 18:50

⚙️ Signalcraft AI 시스템 개요

Signalcraft AI 시스템은 AI 기반 오디오 분석을 통해 산업용 컴프레서(압축기)의 이상 징후를 감지하고 고장을 예방하는 모니터링 플랫폼입니다. 이 시스템은 **Node.js (Express)**와 Python (Flask) 서버를 동시에 사용하는 듀얼 백엔드 아키텍처를 특징으로 하며, Nginx와 PM2를 통해 단일 EC2 인스턴스에서 효율적으로 운영됩니다.


🎯 시스템 목적 및 핵심 기능

이 시스템의 주요 목적은 상업용 냉동 장비와 같은 산업용 컴프레서의 오디오 신호를 지속적으로 분석하여, 장비 고장이 발생하기 전에 이상 징후를 감지하고 재고 손실과 가동 중단 시간을 줄이는 것입니다.

기능 설명 구현
🧠 AI 오디오 분석 앙상블 머신러닝 모델을 사용하여 컴프레서 오디오를 실시간으로 분석합니다. ensemble_ai_service (Random Forest, SVM 등)
🕒 24/7 모니터링 ESP32 IoT 기기를 통해 센서 데이터를 중단 없이 수집하고 처리합니다. sensor_monitoring_service
📢 다채널 알림 이메일, SMS, 카카오 메시지, SSE를 통해 사용자에게 알림을 전송합니다. notification_service, kakao_notification_bp
👤 사용자 관리 카카오 소셜 로그인(OAuth)과 일반 이메일/비밀번호 로그인을 모두 지원합니다. enhanced_auth_bp, kakaoRoutes
📊 실시간 대시보드 WebSocket/SSE를 통해 실시간 모니터링 데이터를 시각화합니다. realtime_streaming_service
📱 모바일 접근 원격 모니터링을 위한 모바일 앱 인터페이스를 제공합니다. mobile_app_bp
Sheets로 내보내기

🏗️ 시스템 아키텍처

Signalcraft는 듀얼 백엔드 아키텍처를 채택하여 각 기술 스택의 장점을 극대화했습니다.

  • Node.js (Express): 비동기 I/O 처리 능력의 이점을 살려 인증, 세션 관리, 실시간 알림(SSE) 등 I/O 집약적인 작업을 처리합니다.
  • Python (Flask): 강력한 머신러닝 생태계를 활용하여 AI 모델 추론, 데이터 분석 등 CPU 집약적인 작업을 담당합니다.
  • Nginx: 외부의 모든 요청을 받는 단일 진입점(Entry Point) 역할을 하며, URL 패턴에 따라 요청을 적절한 백엔드 서버로 라우팅하는 리버스 프록시로 작동합니다.
  • PM2: 두 백엔드 애플리케이션의 실행, 자동 재시작, 로깅 등 프로세스 생명주기를 관리합니다.

💻 기술 스택

구분 기술 목적
🌐 프론트엔드 Vanilla JavaScript 클라이언트 로직, 인증 및 UI 상태 관리
  Bootstrap 5 반응형 UI 디자인 프레임워크
  SSE (Server-Sent Events) 실시간 알림 수신
⚙️ 백엔드 (Node.js) Express.js 웹 프레임워크 및 라우팅
  cookie-parser 쿠키 파싱 미들웨어
🧠 백엔드 (Python) Flask 웹 프레임워크 및 블루프린트 아키텍처
  scikit-learn, TensorFlow/Keras 머신러닝 및 딥러닝 모델 실행
🗃️ 데이터 저장소 SQLite 사용자, 세션, 센서 데이터 등 관계형 데이터 저장
  파일 시스템 ML 모델 파일(.pkl, .h5), 오디오 데이터 등 저장
🚀 인프라 Nginx 웹 서버 및 리버스 프록시
  PM2 프로세스 관리자
  AWS EC2 클라우드 서버 호스팅 (signalcraft.kr)
  GitHub Actions CI/CD (지속적 통합/배포) 자동화
Sheets로 내보내기

🚪 애플리케이션 진입점 및 요청 라우팅

사용자 요청은 Nginx를 통해 URL 경로에 따라 적절한 백엔드 서버와 핸들러로 전달됩니다.

엔드포인트 백엔드 목적
GET / Node.js 서비스 소개 페이지 제공
POST /api/auth/login Node.js + Flask 사용자 로그인 처리
GET /api/auth/verify Node.js + Flask 세션 유효성 검증
POST /api/lightweight-analyze Flask 오디오 파일 AI 분석 요청
POST /api/esp32/data Flask IoT 센서 데이터 수신
GET /api/notifications/stream Node.js 실시간 알림 스트림 (SSE)
Sheets로 내보내기

🧩 주요 구성 요소

  • 클라이언트 애플리케이션 (static/app.js): 사용자의 로그인 상태를 확인하고, 그에 따라 UI를 동적으로 변경하며, 카카오 로그인과 같은 인증 흐름을 관리합니다.
  • Express 서버 (server/app.js): 인증 세션과 쿠키를 관리하고, 실시간 SSE 연결을 처리하며, 정적 파일(HTML, CSS, JS)을 제공합니다.
  • Flask 서버 (app.py): 11개 이상의 모듈(블루프린트)을 등록하여 기능별 라우팅을 관리하고, 서버 시작 시 AI 및 IoT 모니터링 서비스를 초기화합니다.
  • 서비스 레이어: AI 분석(ensemble_ai_service), IoT 센서 폴링(sensor_monitoring_service), 실시간 스트리밍(realtime_streaming_service) 등 핵심 비즈니스 로직을 담당합니다.

☁️ 배포 인프라 및 자동화

시스템은 단일 EC2 인스턴스에서 운영되며, GitHub Actions를 통해 CI/CD 파이프라인이 완벽하게 자동화되어 있습니다.

  1. Push: 개발자가 main 브랜치에 코드를 푸시합니다.
  2. CI/CD Trigger: GitHub Actions 워크플로우가 자동으로 실행됩니다.
  3. Deploy: SSH를 통해 EC2 서버에 접속하여 최신 코드를 내려받습니다.
  4. Restart: PM2를 사용해 Node.js와 Python 서버를 무중단으로 재시작합니다.
  5. Health Check: 배포 후 curl, netstat 등의 명령어로 서버 상태를 자동으로 검증합니다.

또한 systemd 서비스를 통해 시스템 부팅 시 PM2가 자동으로 실행되도록 설정하여 안정성을 높였습니다.


🌊 주요 데이터 흐름

  • 사용자 인증 흐름: 사용자가 로그인하면 Express 서버가 자격 증명을 확인하고 세션 토큰을 생성합니다. 클라이언트는 이 토큰을 localStorage에 저장하고, 이후 요청마다 토큰을 검증하여 로그인 상태를 유지합니다.
  • AI 진단 흐름: 사용자가 웹에서 오디오를 녹음하여 /api/lightweight-analyze로 전송하면, Flask 서버의 ensemble_ai_service가 200개 이상의 오디오 특징을 추출하고 앙상블 모델로 분석하여 진단 결과를 반환합니다.
  • IoT 센서 흐름: ESP32 기기가 주기적으로 센서 데이터를 /api/esp32/data로 전송합니다. Flask 서버는 데이터를 처리하고, 이상 징후가 감지되면 notification_service를 통해 Node.js 서버의 SSE 스트림으로 알림을 보내 클라이언트에게 실시간으로 전달합니다.

✨ 요약

Signalcraft AI 시스템은 다음과 같은 특징을 가진 안정적인 산업용 모니터링 플랫폼입니다.

  • 듀얼 백엔드 아키텍처를 통해 I/O 작업과 ML 연산을 효과적으로 분리
  • GitHub Actions 기반의 자동화된 CI/CD 파이프라인으로 빠르고 안정적인 배포
  • PM2와 systemd를 활용한 견고한 프로세스 관리로 높은 가용성 보장
  • 실시간 AI 분석IoT 연동을 통한 선제적 장비 고장 예방
  • 웹과 모바일 클라이언트를 모두 지원하며, 현재 https://signalcraft.kr 에서 운영 중입니다.

'SIGNALCRAFT' 카테고리의 다른 글

2025-10-12 프로젝트 핵심 구조 공부  (0) 2025.10.13
2025-10-11 프로젝트 핵심 구조 공부  (0) 2025.10.12