メッセージブローカー(WAMP)
WAMPメッセージブローカーはIronFlockの通信基盤です。すべてのコンポーネント — エッジデバイス、中央サービス、仮想デバイス、AIシステム、Web UI — がブローカーに接続し、それを通じて通信します。
WAMPを選ぶ理由
WAMP(Web Application Messaging Protocol)は2つの通信パターンを1つのプロトコルに統合します:
- Publish/Subscribe(Pub/Sub) — デバイスがセンサーデータをトピックにパブリッシュし、ダッシュボード、FleetDB Service、アラーム評価エンジンがサブスクライブしてリアルタイムで受信します
- リモートプロシージャコール(RPC) — AIサービスがエッジデバイス上の関数を呼び出し、バックエンドがOTAアップデートをトリガーし、オペレーターがマシンにコマンドを送信します
このデュアルパターンにより、IronFlockはリアルタイムデータストリーミングとリクエスト-レスポンス操作に別々のシステムを必要としません。1つのプロトコル、1つの接続、両方のパターン。
コンポーネントの接続方法
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ エッジ │ │ 仮想 │ │ Web UI │
│ デバイス │ │ デバイス │ │ (ブラウザ) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ WSS │ WSS │ WSS
└────────────────────┼────────────────────┘
│
┌───────┴───────┐
│ WAMP Broker │
└───────┬───────┘
│
┌────────────────────┼────────────────────┐
│ WSS │ WSS │ WSS
┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐
│ バックエンド │ │ FleetDB │ │ AI │
│ サービス │ │ サービス │ │ サービス │
└──────────────┘ └──────────────┘ └──────────────┘すべての接続はWSS(WebSocket Secure) — TLS上の暗号化された永続的な双方向接続を使用します。
レルムによるプロジェクト分離
ブローカーはWAMPレルムを使用してプロジェクト間の厳密な分離を強制します:
- 各プロジェクト-アプリの組み合わせに独自のレルム — 完全に分離されたメッセージング名前空間が割り当てられます
- あるレルムでパブリッシュされたメッセージは、他のすべてのレルムからは見えません
- プロジェクトAのデバイスはプロジェクトBのデバイスを見ることも操作することもできません
- 同じアプリが2つの異なるプロジェクトにインストールされていても、別々のレルムで動作します
認証
ブローカーへのすべての接続には認証が必要です:
| コンポーネント | 認証方式 |
|---|---|
| エッジデバイス | WAMP-CRA(チャレンジ-レスポンス)、デバイスごとのシークレット使用 |
| バックエンドサービス | WAMP-CRA、システム資格情報使用 |
| Web UIクライアント | OIDCベースのセッショントークン |
| AIサービス | スコープ付きアクセスのシステム資格情報 |
認証されていないクライアントはレルムへの参加、トピックのサブスクライブ、プロシージャの呼び出しができません。
リアルタイムデータフロー
センサー値がデバイスからダッシュボードに流れる仕組み:
- デバイスアプリがセンサー値を読み取り、プロジェクトレルム内のWAMPトピックにパブリッシュします
- WAMPブローカーがそのレルム内のすべてのサブスクライバーにメッセージをルーティングします
- FleetDB Serviceがメッセージを受信し、TimescaleDBに書き込み、アラームルールを評価します
- Web UIが同じメッセージを受信し、ダッシュボードチャートをリアルタイムで更新します
このフロー全体はサブ秒のレイテンシで発生します — ダッシュボードはデータが到着するのと同じ速さで更新されます。
デバイス制御のためのRPC
ブローカーはエッジデバイスの直接制御も可能にします:
- オペレーターがWeb UIで「アプリを再起動」をクリックします
- バックエンドがブローカーを通じてデバイスエージェント上のRPCを呼び出します
- デバイスエージェントが呼び出しを受信し、コンテナを再起動して結果を返します
- Web UIが確認を表示します
同じメカニズムがフィジカルAIを実現します — AIアシスタントがデバイス上の関数を呼び出すとき、それはブローカーを通じたRPCコールです。
スケーラビリティ
WAMPブローカーはプロダクション環境でクラスターとして動作します:
- 複数のブローカーノードが同時接続を処理します
- 負荷はノード間で分散されます
- デバイスは障害時の自動再接続を含む永続的な接続を維持します
- ブローカーは数千の同時デバイス接続を低レイテンシのメッセージ配信で処理します
オンプレミス展開
オンプレミス展開では、WAMPブローカーは他の中央サービスとともにお客様のインフラストラクチャ上で実行されます。プロトコルと分離保証はまったく同じです — 唯一の違いはネットワークパス(インターネットの代わりにローカル)です。
詳細はオンプレミス展開をご覧ください。