Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DTD_クラウド×オンプレ連携で実現するデータ収集基盤の構築事例

 DTD_クラウド×オンプレ連携で実現するデータ収集基盤の構築事例

Avatar for BrainPad

BrainPad

July 31, 2025
Tweet

More Decks by BrainPad

Other Decks in Technology

Transcript

  1. 2 ©BrainPad Inc. Strictly Confidential 自己紹介 枝崎 健翔 EDASAKI KENTO

    データエンジニア 所属 株式会社ブレインパッド データエンジニアリングユニット プラットフォーム開発 2024年にブレインパッドへ新卒入社。 入社後は、クラウド上のデータ基盤や分析レポートの出力自動化ツールの開発を行う。現在はIoTデータ活 用プロジェクトに従事し、IoT機器によるデータ収集や分析基盤の設計・開発、機械学習を用いた分析まで を、一気通貫して担当。 自己紹介 • サッカー(みる・する・支える) • 国内旅行/海外旅行 • ゲーム 趣味 好きな食べ物 • 生もの(海鮮、ユッケ...) • 果物 • スイーツ 千葉生まれ大阪育ち。父は北海道、母は沖縄出身。 プチ情報
  2. 4 ©BrainPad Inc. Strictly Confidential 本発表で学べる事 本発表では、弊社の構築事例を基に以下の内容のご説明を行います。 IoTデータ収集基盤 動画データ収集 センサーデータ収集

    安全な通信 プロトコル トンネリング ルーティング SSHサーバ 仮想マシン HLS RTSP RTMP ネットワーク カメラ 配信サーバ エンコーダ FFmpeg Nginx 安全な通信 Key Vault シークレット マネージドID Vnet統合 サービス エンドポイント Functions 外部システム 連携 REST API
  3. 6 ©BrainPad Inc. Strictly Confidential システムで実現すること IoT機器から取得されるデータをクラウドで収集・蓄積し、 データ分析用のモデル実行環境を提供する分析基盤を、短期間で開発する 機能要件 非機能要件

    データ取込 • カメラ映像をリアルタイムに受信・保存 • センサーのデータを最低1日に1回保存 リアルタイム配信 • Webブラウザでリアルタイム映像視聴(複数カメラ対応) モデル実行環境 • Pythonノートブックでモデルを実行できる環境 • 機械学習パイプラインを構築できる環境 インフラ • 分析基盤はMicrosoft Azure上で構築 セキュリティ • オンプレ・クラウド間はインターネット経由で安全な通信 • 遠隔でオンプレの機器に接続できる構成 拡張性 • カメラ・センサーの増設に対応可能な構成 ⑤ さいごに ④ センサーデー タ ③ 動画データ ② 全体像 ① 背景
  4. 8 ©BrainPad Inc. Strictly Confidential システムアーキテクチャ(簡略図) カメラ映像はミニPCを経由して、センサーデータは外部サービスを経由して、クラウドへ送信されます 分析環境は、Azure Machine Learningによって提供されます。

    データソース データ収集基盤 ユーザー オンプレミス環境 Azure環境 社内環境 ネットワークカメ ラ USBカメラ ミニPC センサー 制御機器 サーバー群 Virtual Machine 映像データ取込 Functions センサーデータ取 込 ADLS Gen2 データレイク MLワークスペース モデル実行環境 現場担当者 分析担当者 外部サービス ⑤ さいごに ④ センサーデー タ ③ 動画データ ② 全体像 ① 背景
  5. 9 ©BrainPad Inc. Strictly Confidential ハードウェア構成 ネットワークカメラはPoE対応のL2スイッチ経由で、USBカメラはミニPC経由で給電・通信を行います。 また、センサーはルーターに無線LAN対応の制御機器を用いてデータ収集を行います。 Internet ルーター

    L2スイッチ ネットワー ク カメラ ネットワー ク カメラ ネットワー ク カメラ ミニPC USBカメラ USBカメラ センサー センサー センサー 制御機器 PoE対応スイッチングハブ Windows PC Wi-Fi対応 ⑤ さいごに ④ センサーデー タ ③ 動画データ ② 全体像 ① 背景
  6. 11 ©BrainPad Inc. Strictly Confidential 事前知識①:代表的な機器構成 カメラによって撮影された映像は、エンコーダによって圧縮・変換されたのち、配信サーバに送信されます。 配信サーバは受け取った映像を受信クライアントに中継・配信します。 映像と音声を撮影し、 映像ソースを提供する

    エンコーダ カメラ 配信サーバー 受信クライアント 配信映像を受信/再生する カメラやエンコーダから受信 した映像を、リアルタイムor オンデマンドで配信する カメラ映像を圧縮して、 配信可能な形式に変換する • USBカメラ • HDMI出力カメラ • IP(ネットワーク)カメラ • ブラウザ • アプリケーション • 組み込み端末 • RTMPサーバ • WebRTCサーバ • HLS/DASHサーバ • ハードウェアエンコーダ • ソフトウェアエンコーダ 役割 役割 役割 役割 種類 種類 種類 種類 ⑤ さいごに ④ センサーデー タ ③ 動画データ ② 全体像 ① 背景
  7. 12 ©BrainPad Inc. Strictly Confidential 事前知識②:様々な通信プロトコル プロトコルによって、通信方法や遅延の大小に差があります。 システム構成やネットワーク環境に応じて最適なプロトコルを選択する必要があります。 配信 受信

    配信 受信 配信/受信 配信/受信 配信 受信 RTSP (Real-Time Streaming Protocol) RTMP (Real-Time Messaging Protocol) WebRTC (Web Real-Time Communication) HLS (HTTP Live Streaming) 主にネットワークカメラで使われる低遅延のストリーミ ング制御プロトコル。 YouTubeなどのライブ配信で広く使われる低遅延プロト コル。 ブラウザ間で双方向通信が可能な超低遅延プロトコル。 Web会議によく使われる。 Appleが開発したHTTPベースの配信方式。遅延は大きい が安定性が高い。 データ データ アクセス アクセス データ データ アクセス アクセス ⑤ さいごに ④ センサーデー タ ③ 動画データ ② 全体像 ① 背景
  8. 13 ©BrainPad Inc. Strictly Confidential 事前知識③:便利なソフトウェア システム規模や開発のカスタマイズ性などを考慮し、最適なツールを選択する必要があります。 配信サーバ 映像キャプチャ・エンコード OBS

    Studio Nginx + RTMPモジュール FFmpeg Wowza Streaming Engine GUIベースの無料配信ソフト。 カメラ映像・画面映像・音声などを組み合わせてライブ 配信が可能。YouTube Liveなどの配信にもよく使われる。 初心者に使いやすいが、自動化には向かない。 軽量なWebサーバにRTMP機能を追加した配信サーバ。 RTMPで受信した映像を中継したり、HLS形式で配信し たりできる。構成がシンプルで低コストだが、大規模配 信や高度な機能は難しい。 コマンドベースの高機能な映像処理ツール。 映像の取得、変換、配信といった映像処理機能を広く搭 載している。スクリプトで自動化できるが、習得には知 識が必要。 商用で高機能な映像配信サーバ。 RTMP、HLS、WebRTCなどの多様なプロトコルに対応。 大規模な配信に向いており、録画やAPI制御も可能だが、 利用にはライセンス費用が発生する。 ⑤ さいごに ④ センサーデー タ ③ 動画データ ② 全体像 ① 背景
  9. 14 ©BrainPad Inc. Strictly Confidential 本プロジェクトの構築事例(初期想定) 開発初期は、ネットワークカメラとミニPCから直接VMに映像データを取り込む、最もシンプルな構成を想 定していました。 Internet Internet

    社内環境 オンプレミス環境 UVC ネットワークカメ ラ エンコード RTSP配信 USBカメラ ミニPC Azure環境 ADLS Gen2 Virtual Machine RTMP HLS HTTPS リアルタイム 受信クライアント オンデマンド 受信クライアント RTSP HTTPS Nginx FFmpeg ⑤ さいごに ④ センサーデー タ ③ 動画データ ② 全体像 ① 背景 ※凡例 データの流れ アクセスの流れ FFmpeg
  10. 15 ©BrainPad Inc. Strictly Confidential 本プロジェクトの構築事例(初期想定) オンプレ接続にポート開放や認証実装が必要で、暗号化されていない通信も含めてセキュリティと開発工数 に懸念が生じました。 Internet Internet

    社内環境 オンプレミス環境 ネットワークカメ ラ エンコード RTSP配信 USBカメラ ミニPC Azure環境 HTTPS ADLS Gen2 Virtual Machine RTMP HLS HTTPS リアルタイム 受信クライアント オンデマンド 受信クライアント RTSP 発生した問題 詳細 ① オンプレ環境へのアクセスが必要 外部からオンプレへのアクセスには、ポート開放やDDNSなどの設定が必要となり、セキュリティの 脆弱化や開発工数の増加といった懸念が発生した ② 通信が暗号化されていない RTSP, RTMP, HLSの通信がデフォルトで暗号化されていないため、セキュリティの懸念が発生した ③ ユーザー認証の実装が必要 アクセスできる人を制限するには、ユーザ認証の実装が必要となり、開発工数の増加が懸念された UVC ① ② ③ ② Nginx FFmpeg ⑤ さいごに ④ センサーデー タ ③ 動画データ ② 全体像 ① 背景 ※凡例 データの流れ アクセスの流れ FFmpeg
  11. 16 ©BrainPad Inc. Strictly Confidential 本プロジェクトの構築事例 Azure VMにVPNサーバ機能を実装することで、トンネリングによる暗号化された通信が可能となりました。 天井カメラの映像をミニPCとトンネリング経由のルートに変更しました。 Internet

    Internet 社内環境 オンプレミス環境 UVC ネットワークカメ ラ エンコード RTSP配信 USBカメラ ミニPC Azure環境 ADLS Gen2 Virtual Machine Nginx FFmpeg RTMP HLS HTTPS リアルタイム 受信クライアント オンデマンド 受信クライアント RTSP HTTPS トンネリング トンネ リング FFmpeg OpenSSH SoftEther SoftEther A) SoftEther VPN ServerによってAzure VMにVPNサーバの役割を実装 B) ミニPCおよびリアルタイム受信クライアントが、Azure VMとトンネ リング (VPN) 接続するように設定 C) ネットワークカメラへのアクセスにミニPC経由のルーティングを設定 D) OpenSSH ServerによってミニPCにSSHサーバの役割を実装 1. Azure VMからオンプレ環境への安全なアクセスが可能になった (A/B/C) また、ミニPCに対してSSHで遠隔操作できるようになった (D) 2. インターネットを通る通信が暗号化された (A/B) 3. VPNのユーザ認証により許可されたクライアントのみ、Azure VMとの HLS通信が可能になった (A/B) 変更点 効果 RTSP ※凡例 データの流れ アクセスの流れ ⑤ さいごに ④ センサーデー タ ① 背景 ② 全体像 ③ 動画データ
  12. 17 ©BrainPad Inc. Strictly Confidential 本プロジェクトの構築事例 トンネリングを通じたオンプレ環境へのアクセスが可能となり、ミニPCにSSH接続が可能となりました。 また、VPNのユーザ認証により外部の人の映像視聴が制限されました。 Internet Internet

    社内環境 オンプレミス環境 ネットワークカメ ラ エンコード RTSP配信 USBカメラ ミニPC Azure環境 ADLS Gen2 Virtual Machine Nginx FFmpeg RTMP HLS HTTPS リアルタイム 受信クライアント オンデマンド 受信クライアント RTSP HTTPS トンネリング トンネ リング FFmpeg OpenSSH SoftEther SoftEther RTSP UVC ⑤ さいごに ④ センサーデー タ ③ 動画データ ② 全体像 ① 背景 ※凡例 データの流れ アクセスの流れ A) SoftEther VPN ServerによってAzure VMにVPNサーバの役割を実装 B) ミニPCおよびリアルタイム受信クライアントが、Azure VMとトンネ リング (VPN) 接続するように設定 C) ネットワークカメラへのアクセスにミニPC経由のルーティングを設定 D) OpenSSH ServerによってミニPCにSSHサーバの役割を実装 1. Azure VMからオンプレ環境への安全なアクセスが可能になった (A/B/C) また、ミニPCに対してSSHで遠隔操作できるようになった (D) 2. インターネットを通る通信が暗号化された (A/B) 3. VPNのユーザ認証により許可されたクライアントのみ、Azure VMとの HLS通信が可能になった (A/B) 変更点 効果
  13. 18 ©BrainPad Inc. Strictly Confidential 本プロジェクトの構築事例(詳細なデータの流れ) VPN接続を確立したのち、ネットワークカメラの映像はミニPCのルーティングで、USBカメラの映像は ミニPC上のFFmpegによるキャプチャとエンコードで、VMのNginxサーバに送信されます。 RTSP RTMP

    SSH HLS HTTPS オンプレミス環境 FFmpeg 圧縮 プロトコル変換 SoftEther VPN接続 OpenSSH SSHサーバ portproxy ルーティング RTSP UVC 社内環境 ブラウザ リアルタイム受信 Storage Explorer オンデマンド受信 VPN設定 VPN接続 SoftEther VPN L2TP Internet Internet Azure環境 SoftEther VPNサーバ シェル 遠隔操作 Nginx RTMPサーバ HLS配信 FFmpeg ファイル形式変換 分割保存 ADLS Gen2 FFmpeg プロトコル変換 RTMP HTTPS ファイル保存 ※Systemdによって一元管理 RTMP ⑤ さいごに ④ センサーデー タ ③ 動画データ ② 全体像 ① 背景
  14. 20 ©BrainPad Inc. Strictly Confidential 本プロジェクトの構築事例 センサーデータは、外部サービスからFunctionsによるREST API呼び出しによって取得しています。 サーバー群 外部サービス

    Azure環境 Key Vault APIトークン保管 ADLS Gen2 データレイク 仮想ネットワーク Functions センサーデータ取 込 エンドポイント アクセス制限 センサー 制御機器 オンプレミス環境 ⑤ さいごに ④ センサーデー タ ③ 動画データ ② 全体像 ① 背景 • 開発期間の制限から、機器からインターネットへのデータ送信を外部サービスによって実装した • Azure環境へのデータ取り込みは、Functionsによって1時間に1回REST APIを呼び出す形で実装した • Functionsは仮想ネットワークに統合し、他サービスとの通信はサービスエンドポイント経由とした • APIの呼び出しに使用する機密情報はKey Vaultを用いて安全な場所へ格納した
  15. 21 ©BrainPad Inc. Strictly Confidential 本プロジェクトの構築事例:Functionsの処理 前半は、Functions全体で使用する引数やサービスクライアントなどの設定を行います。 ⑤ さいごに ④

    センサーデー タ ③ 動画データ ② 全体像 ① 背景 毎時30分に起動 ① データ取り込み対象日時の生成 ② ファイル名の生成 ③ KayVaultからAPIトークン取得 ④ BlobServiceClient初期化 ⑤ APIリクエスト(データ取得) ⑥ Storageへファイルアップロード 終了 ステップ1 ステップ1:共通の事前処理 ① データ取り込み対象日時の生成 APIのパラメータとして使用するため、直前1時間の開始日時と終了日時 を生成する。 (例)2025/1/1 15:30に実行された場合 ・開始日時:2025-01-01-14-00-00 ・終了日時:2025-01-01-14-59-59 ② ファイル名の生成 開始日時からファイル名を生成する。 (例)開始時刻が2025-01-01-14-00-00の場合 ・ファイル名:20250101-140000.json ③ KayVaultからAPIトークン取得 KeyVaultの認証情報を取得し、シークレットとして保存されているAPIト ークンを取り出す。 ④ BlobServiceClient初期化 Azureストレージの認証情報を取得し、接続の準備を行う。この時、 Functionsのシステム割り当てマネージドIDによって認証を行う。
  16. 22 ©BrainPad Inc. Strictly Confidential 本プロジェクトの構築事例:Functionsの処理 後半では、ユニットIDごとに繰り返し実施される処理として、APIリクエストやStorageへのファイルアッ プロードを行います。 ⑤ さいごに

    ④ センサーデー タ ③ 動画データ ② 全体像 ① 背景 毎時30分に起動 ① データ取り込み対象日時の生成 ② ファイル名の生成 ③ KayVaultからAPIトークン取得 ④ BlobServiceClient初期化 ⑤ APIリクエスト(データ取得) ⑥ Storageへファイルアップロード 終了 ステップ2 ステップ2:ユニットIDごとの繰り返し処理 (ユニットID:制御機器ごとに割り当てられるID) ⑤ APIリクエスト(データ取得) 以下の情報にてAPIリクエストを送信してレスポンスを取得する。 ヘッダー:APIトークン ボディ:ユニットID, 開始日時, 終了日時 ⑥ Storageにファイルアップロード ⑤で取得したレスポンスをJSONファイルとしてStorageにアップロード する。 フォルダパス:メーカー名/ユニットID/フォーマットバージョン/年/月/日/ センサ ー センサ ー センサ ー 制御機 器 構成図 ユニットIDが紐づく
  17. 24 ©BrainPad Inc. Strictly Confidential まとめ 動画データは、安全なネットワーク通信でリアルタイムにクラウドへ取り込んだ。 センサーデータは、Functionsによる定期的なAPIリクエストでクラウドへ取り込んだ。 ⑤ さいごに

    ④ センサーデー タ ③ 動画データ ② 全体像 ① 背景 動画データ センサーデータ • オンプレミス・クラウド間はトンネリングを確立し、安全なアクセス およびデータの疎通を実現 • クラウド・社内環境間もトンネリングを確立し、 アクセスできるユーザを制限 トンネリング ルーティング • オンプレミスのPCによるルーティングによって、クラウドからオンプ レの機器へのアクセスを実現 SSH • オンプレミスのPCにSSHサーバを実装することで、クラウドからオン プレのPCを遠隔操作 Nginxサーバ • クラウドのVMにNginxサーバとRTMPモジュールを導入することで、動 画のリアルタイム受信・配信を実装 • 外部サーバへの定期的なAPIリクエストはFunctionsを使用 APIリクエスト • KeyVaultによってAPIリクエストに使用するAPIトークンを安全に保管 KeyVault • パブリックインターネットを使用せず、サービスエンドポイント経由 でAzureのリソースへ安全にアクセス Vnet統合 • FunctionsからストレージへはマネージドIDで安全にアクセス マネージドID
  18. 25 ©BrainPad Inc. Strictly Confidential 振り返り ⑤ さいごに ④ センサーデー

    タ ③ 動画データ ② 全体像 ① 背景 感想 ハイブリッドクラウドのシステム構築では、ネットワークの知識の広さが重要 • オンプレ・クラウド間で安全な通信を行うために、ネットワークのあらゆる手法を駆使する必要がある • 幅広い選択肢から最適な手段を見つけるためには、ある程度ネットワークの基礎知識を持っていなければならない 自社での開発と他社サービスの利用の境界線が重要 • 開発工数やコスト、カスタマイズ性などを考慮して、自社で開発する範囲と他社のサービスを利用する範囲を決定するとよい • 特に、IoT機器はデータエンジニアとしてあまり触れない知識が求められるため、プロフェッショナルの手助けが必要な場面が多い エンジニアとして今後も研鑽を積み、プロフェッショナルに近づけるよう頑張ります。 ご清聴ありがとうございました!