Skip to Content
아키텍처메시지 브로커 (WAMP)

메시지 브로커 (WAMP)

WAMP 메시지 브로커는 IronFlock의 통신 백본입니다. 모든 컴포넌트 — 엣지 디바이스, 중앙 서비스, 가상 디바이스, AI 시스템, 웹 UI — 가 브로커에 연결하여 통신합니다.

WAMP를 선택한 이유

WAMP(Web Application Messaging Protocol)는 단일 프로토콜에서 두 가지 통신 패턴을 결합합니다:

  • 게시/구독(pub/sub) — 디바이스가 센서 데이터를 토픽에 게시하면 대시보드, FleetDB 서비스, 알람 평가기가 구독하여 실시간으로 수신합니다
  • 원격 프로시저 호출(RPC) — AI 서비스가 엣지 디바이스의 함수를 호출하고, 백엔드가 OTA 업데이트를 트리거하며, 운영자가 기계에 명령을 전송합니다

이 이중 패턴은 IronFlock이 실시간 데이터 스트리밍과 요청-응답 작업에 별도의 시스템이 필요하지 않음을 의미합니다. 하나의 프로토콜, 하나의 연결, 두 가지 패턴.

컴포넌트 연결 방식

┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 엣지 │ │ 가상 │ │ 웹 UI │ │ 디바이스 │ │ 디바이스 │ │ (브라우저) │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │ WSS │ WSS │ WSS └────────────────────┼────────────────────┘ ┌───────┴───────┐ │ WAMP 브로커 │ └───────┬───────┘ ┌────────────────────┼────────────────────┐ │ WSS │ WSS │ WSS ┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐ │ 백엔드 │ │ FleetDB │ │ AI │ │ 서비스 │ │ 서비스 │ │ 서비스 │ └──────────────┘ └──────────────┘ └──────────────┘

모든 연결은 WSS(WebSocket Secure) — TLS를 통한 암호화되고 지속적인 양방향 연결 — 을 사용합니다.

렐름을 통한 프로젝트 격리

브로커는 WAMP 렐름을 사용하여 프로젝트 간에 엄격한 격리를 적용합니다:

  • 각 프로젝트-앱 조합은 자체 렐름 — 완전히 격리된 메시징 네임스페이스 — 을 보유합니다
  • 한 렐름에서 게시된 메시지는 다른 모든 렐름에서 보이지 않습니다
  • 프로젝트 A의 디바이스는 프로젝트 B의 디바이스를 보거나 상호 작용할 수 없습니다
  • 두 개의 다른 프로젝트에 설치된 동일한 앱도 별도의 렐름에서 운영됩니다

인증

브로커에 대한 모든 연결은 인증이 필요합니다:

컴포넌트인증 방법
엣지 디바이스디바이스별 시크릿을 사용한 WAMP-CRA(챌린지-응답)
백엔드 서비스시스템 자격 증명을 사용한 WAMP-CRA
웹 UI 클라이언트OIDC 기반 세션 토큰
AI 서비스범위가 지정된 접근을 가진 시스템 자격 증명

인증되지 않은 클라이언트는 렐름에 참여하거나, 토픽을 구독하거나, 프로시저를 호출할 수 없습니다.

실시간 데이터 흐름

센서 값이 디바이스에서 대시보드로 흐르는 방식:

  1. 디바이스 앱이 센서 값을 읽고 프로젝트 렐름의 WAMP 토픽에 게시합니다
  2. WAMP 브로커가 해당 렐름의 모든 구독자에게 메시지를 라우팅합니다
  3. FleetDB 서비스가 메시지를 받아 TimescaleDB에 기록하고 알람 규칙을 평가합니다
  4. 웹 UI가 동일한 메시지를 받아 대시보드 차트를 실시간으로 업데이트합니다

이 전체 흐름은 1초 미만의 지연 시간으로 발생합니다 — 대시보드는 데이터가 도착하는 만큼 빠르게 업데이트됩니다.

디바이스 제어를 위한 RPC

브로커는 엣지 디바이스의 직접 제어도 가능하게 합니다:

  1. 운영자가 웹 UI에서 “앱 재시작”을 클릭합니다
  2. 백엔드가 브로커를 통해 디바이스 에이전트에서 RPC를 호출합니다
  3. 디바이스 에이전트가 호출을 받아 컨테이너를 재시작하고 결과를 반환합니다
  4. 웹 UI가 확인 메시지를 표시합니다

동일한 메커니즘이 물리적 AI를 구동합니다 — AI 어시스턴트가 디바이스에서 함수를 호출할 때 브로커를 통한 RPC 호출입니다.

확장성

WAMP 브로커는 프로덕션 배포에서 클러스터로 운영됩니다:

  • 여러 브로커 노드가 동시 연결을 처리합니다
  • 부하가 노드 간에 분산됩니다
  • 디바이스는 장애 시 자동 재연결을 통해 지속적인 연결을 유지합니다
  • 브로커는 낮은 지연 시간으로 메시지를 전달하면서 수천 개의 동시 디바이스 연결을 처리합니다

온프레미스 배포

온프레미스 배포에서 WAMP 브로커는 다른 중앙 서비스와 함께 귀사의 인프라에서 실행됩니다. 프로토콜과 격리 보장은 동일하게 유지됩니다 — 유일한 차이점은 네트워크 경로(인터넷 대신 로컬)입니다.

자세한 내용은 온프레미스 배포를 참조하십시오.

Last updated on