現状と再設計の比較整理

アーキテクチャ変更点、監視対象、エージェント導入フローの比較

1. 全体比較サマリー表

現在の MeshConsole 実装と、本再設計案における機能差および管理範囲の比較は以下の通りです。

区分 現状の実装 (Current) 再設計後の実装 (To-Be)
リアルタイム通信 エージェントからの 10秒周期 HTTP ポーリング応答に頼るため、コンソールからの Docker 操作等に最大 10秒の遅延が生じる。 HTTP SSE (Server-Sent Events) 常時ストリームを採用。コンソール操作をエージェントへミリ秒単位で即時プッシュ・実行。
エージェントの導入 手動配置、手動依存パッケージインストール、手動での .env 暗号キー作成など、セットアップ手順が煩雑 UI からインストール用ワンライナー (cURL) を発行。対象ノードで実行するだけで、環境検証・サービス化・疎通確認まで全自動化。
セキュリティ一元管理 エージェントメタデータ(名前・ホスト・役割・地域)のみ。OS更新、SSH接続、VPN、ファイアウォールなどのセキュリティ監視は皆無 Fail2ban(ブロックIP/Jail)、OS更新(パッチ有無)、SSH(ログイン接続/強制切断)、VPN(トンネルI/F)を一元監視・制御。
障害・切断検知 明確なヘルスチェック判定がなく、ポーリングが途絶えても画面反映までに時間を要する。 metrics プッシュ途絶からの経過秒数に基づき online ➡ stale (30s) ➡ offline (120s) を厳密に判定。アラートと連携。
自動アップデート エージェント側のバージョン更新は手動アップグレード作業が必要。 コンソールからの指示、または自動比較により selfUpdate.js を経由したバックグラウンド自己アップデートに対応。

2. 監視アーキテクチャの対比(ビジュアル図)

2.1. 現在のデータフロー(ポーリング型)

サーバーとエージェントは10秒に1回繋ぎ直され、コマンドがあれば応答に乗せるだけの受動的な構成です。

graph LR subgraph "Current Model (Polling-based)" C_FE["Console UI"] -- "1. Request Action" --> C_BE["Backend Express"] C_BE -- "2. Store command" --> C_DB["SQLite DB"] C_AG["Agent"] -- "3. Poll metrics & Check Commands (10s)" --> C_BE C_BE -- "4. Return command inside response" --> C_AG C_AG -- "5. Run command" --> C_DK["Docker API"] end style C_FE fill:#1f2937,stroke:#374151,color:#9ca3af style C_BE fill:#1f2937,stroke:#374151,color:#9ca3af style C_AG fill:#1f2937,stroke:#374151,color:#9ca3af

2.2. 再設計後のデータフロー(ハイブリッドプッシュ型)

SSE 常時接続により、サーバーからのシグナルを能動的かつ即時にエージェントへ到達させ、実行結果も別系統で細かく制御します。

graph LR subgraph "Redesigned Model (Realtime SSE Push)" R_FE["Console UI"] -- "1. Trigger API" --> R_BE["Backend Express"] R_BE -- "2. Queue & Push Event" --> R_AC["SSE Channel Map"] R_AC == "3. Instantly Push Command Event" ==> R_AG["Agent"] R_AG -- "4. Execute" --> R_DK["Docker / System"] R_AG -- "5. Push metrics / Report results" --> R_BE R_BE -- "6. Save & Cache" --> R_DB["SQLite DB"] end style R_FE fill:#06b6d4,stroke:#374151,color:#fff style R_BE fill:#3b82f6,stroke:#374151,color:#fff style R_AG fill:#8b5cf6,stroke:#374151,color:#fff