IoT Connect Gateway x Azure Arcを用いた​イベント駆動型アーキテクチャ​

はじめに

こんにちは、イノベーションセンターの野山です。

今回、NTTコミュニケーションズのIoT Connect Gateway(以降ICGW)を用いて、IoT/Edgeのアーキテクチャ検証をしました。 NTTコミュニケーションズの以下メンバーとともに行った結果を共有させていただこうと思います。

  • 角田 佳史 (PS本部 5G&IoT部/IoTサービス部門)
  • 鈴ヶ嶺 聡哲 (イノベーションセンター テクノロジー部門)
  • 野山 瑛哲 (イノベーションセンター テクノロジー部門)

PoCの目的とモチベーション

今回のPoC(Proof of Concept)には、主に2つのモチベーションがあります。

1. IoTアーキテクチャのユースケース検証

このプロジェクトでは、IoTのアーキテクチャにおける具体的なユースケースを検証し、その適用可能性を技術的観点から検証することを目指しました。 これにより、読者の皆様にもこの技術を使用するイメージを明確に伝えられるよう、共有したいと考えています。

2. Azureの新技術の調査・検証

また、今回のPoCではMicrosoft Azureにおける最新技術の調査および検証も重要な目的としています。 特に以下の技術要素が注目されており、それらの適用範囲や効果を検証しました。

この検証を通じて、これらの新技術の特徴や利点、そして適用上の注意点などを明らかにし、 皆様に有益な情報を提供できることを目指しています。

アーキテクチャ概要

先ほど述べた2つのモチベーションに基づいて、以下のようなPoCを実施しました。 このセクションでは、アーキテクチャの概要と主要な要素について説明します。

PoCイメージ

概要として、以下のような画像イメージを想定してPoCを構築した形となります。 ユースケースとしては、製造業などの各拠点に点在する拠点から、部品(ネジ/カメラ/カプセル/etc.....)の故障検知のアーキテクチャを作成しました。

流れとしては以下となります。

  1. 地方の拠点から定期的に撮影した画像を、中央拠点に定期的にアップロードする(大体30s~1mくらいの間隔を想定)
  2. アップロードされると同時にAWSのS3に画像をバックアップする
  3. 中央拠点にアップロードされた画像はその都度、故障推論を行いその様子をリアルタイムで可視化する

PoCイメージ

地方拠点でアップロードされる画像は15種類くらいを想定しました。とはいえ物理的に地方拠点で設置して、というのはなかなか難しいのでサンプルイメージを用いてランダムにアップロードすることで、イメージに近づけています。 Rawな画像と故障推論された画像が可視化された次の図です。アップロードの頻度によって動的に変わっていきます。

アーキテクチャ概要

このようなPoCのイメージを実現したアーキテクチャ概要が下のイメージとなります。

説明するにあたり、このアーキテクチャを3つの機能(Upload/Eventdriven/Inference)に分けて説明します。

Upload

地方の拠点から、画像をUploadする部分となります。 多くの拠点や様々な画像をアップロードし、S3にバックアップをするためにNTT Comの製品であるIoTConnectGateway(ICGW)を使用しています。

ポイントとしては3つあります。

  • UploadするDevice側の追加・削除はICGWを通して任意に変更でき、拡張性が高い
  • ICGWのMirroring機能を用いて、Device側は意識することなく、S3へバックアップされる
  • Device側の固有設定をICGWで設定できるため、統括管理しやすい (ConfigManager機能)

概要

要素技術の説明(ICGW)

上記でポイントとしているICGWにどんなサービス/機能があるのかご紹介します。 今回のPoCで使用しているICGWのサービスは以下の3つです。

  • ストレージ転送機能
  • ミラーリング機能(近日商用リリース予定)
  • コンフィグマネージャー

ストレージ転送機能とコンフィグマネージャーに関する機能説明や取り組みは、 過去連載でも紹介されているのでご興味がある方はご参照ください。

ストレージ転送機能

ストレージ転送機能は、クラウドストレージへデータ転送をする機能です。 ICGWの基本機能であるプロトコル変換機能をベースに、デバイス固有のIMSIやIMEIなどのメタデータを付与した上で転送先のクラウドストレージへデータを転送できます。

概要

今回のPoCでは、Amazon S3やオンプレミス上で構築されたMinioへカメラ画像を送信するために、ストレージ転送機能とミラーリング機能を使用しています。 現在、ストレージ転送機能は、AWS S3互換のストレージのみ対応していますが、OSSであるMinioはS3互換なのでICGWの転送先として設定できます。

ただ、現在のストレージ転送機能単体では、設定されたエンドポイントへのデータ送信時に、複数のクラウドサービスへ同時にデータを転送はできません。厳密に言えば、複数の転送設定を作成し、転送先毎にデータを送信する仕組みを、IoTデバイスへ実装すれば実現可能です。 とはいえ、転送設定を追加する度に、IoTデバイス側で改修が必要になるため、FOTA(Firmware Over The Air)などの遠隔アップデートのような効率的なファームウェア・ソフトウェア管理の仕組みが無い場合は、見逃せないコストに繋がる可能性があります。

そこで、ICGWチームでは、あるエンドポイントにデータを1回送信するだけで、複数のクラウドサービスにデータを転送できる”ミラーリング機能”を開発しました。 記事執筆時点では、ミラーリング機能はベータ機能として一部ユーザのみに提供しており、今回のPoCを通じて試験的に活用し、必要に応じて機能を改善することで品質を高める取り組みを行っています。

ミラーリング機能

ミラーリング機能は、あるエンドポイントにデータを1回送信するだけで、複数のクラウドサービスにデータを転送できる機能です。クラウドサービスの転送設定(スタンダード・イベント・ファンクションの転送設定など)をミラーリングの転送設定へ紐付けることにより、1回のデータ送信で複数のクラウドサービスへデータを転送できるようになります。

今回のPoCでは、ミラーリングの転送設定にストレージ転送設定を紐づけており、オンプレミスストレージ(Minio)とクラウドストレージ(Amazon S3)に対して同時にデータを転送しています。今回はバックアップ用途で使用していますが、通信データのキャプチャ用途で使用し、ミラーリング機能の転送先クラウドサービスでログ解析を行うなど、問題切り分けやセキュリティにこのミラーリング機能が寄与できると考えています。

コンフィグマネージャー

コンフィグマネージャーは、IoTデバイスごとの設定ファイルの生成と配信ができる機能です。IoTデバイス毎の設定ファイルの生成および配信設定は、ポータル上から簡単に行えます。

今回のPoCでは、カメラ画像のアップロード間隔を変更するためにコンフィグマネージャーを使用しており、IoTデバイスの要件に応じた設定ファイルの配信を実現しています。今回はアップロード間隔の変更に使用していますが、設定ファイルの内容次第で様々な要件に対応できます。

Eventdriven

中央拠点にUploadされた画像のEventをTriggerに推論するまでのEventを制御する部分となります。

ポイントとしては3つあります。

  • Kubernetes上で開発を効率的にするためAzureFunctionsを使用
  • 複数のEventをハンドルするためにAzure EventGridを使用
  • これらはAzureArcの機能の一部としてオンプレでも使用可能

概要

要素技術の説明(Azure Arc Enabled K8s)

今回、Eventdrivenの機能を実装するにあたり Azure Arc Enabled K8sを使用しています。 主要な機能が5つあり、オンプレ/パブリッククラウドなど実行場所を広く選べる使用感の高さが魅力です。

またこの Azure Arc Enabled K8s には AzureFunctionsとEventgridの機能がリリースされており、概要としては以下となっています。

Eventdriven説明

これらの機能を用いてEventdrivenの機能を実装しており、 概要フローとしては以下となっています。

また概要フローの中には、さらに2つのサブフローが存在し、それぞれについて詳しくご紹介します。

  • イベントの送信

以下のようにAzureClIを使って、EventGridのリソースを作成できます。 ルーティング先のEndpointやPathを意識していれば簡単に作成できると思います。

実際の画面はこんな感じです。

  • 推論の実行

また、Eventがルーティングされたあとに推論処理をトリガーするAzureFunctionsの展開方法についても概要を説明いたします。

Inference

TriggerされたEventから推論する部分です。

ポイントとしては2つあります。

  • 15種類の画像を推論するため、GPUの割当効率を考える必要がある。
  • この問題をマルチインスタンスGPUを用いて解決している。

概要

要素技術の説明(Mig)

上記での問題についてマルチインスタンスGPUを用いて解決しています。

まとめ

以下に今回用いた技術をまとめてみます。

本記事では、IoTアーキテクチャのユースケース検証と、Azureの新技術の調査・検証を目的としたPoCプロジェクトについて説明しました。

この検証を通じて、IoTアーキテクチャにおける具体的なユースケースの適用可能性を技術的観点から検証し、 EdgeにおけるICGWとAzureの主要技術(Azure Arc Enabled Kubernetes)の特徴や利点、適用上の注意点などが参考になれば幸いです。

© NTT Communications Corporation 2014