クラウドエンジニアブログ

IoT Edge / オンプレミスで動くAzure?

human01

伊崎 敏生

Azure といえばクラウドコンピューティングですね。しかし、利用者側の環境(オンプレミス)で動くサービスもいくつかあります。今回はその中の一つ、IoT Edge についてお伝えします。

歴史は繰り返す?

コンピューターの歴史は、集約と分散が繰り返されて発展してきました。
コンピューターが誕生した当時はとても高価だったため、複数の人が共有して利用することが前提でした。
当然ユーザーの手元に本体はありません。企業や大学など限られた法人が所有するデータセンターに設置されたコンピューターに対して、利用時間を購入して使用していました。

その後、パーソナルコンピューターが生まれ、ユーザーの手元で多くの処理が出来るようになります。
また、複数ユーザーの情報共有やパーソナルコンピューターでは能力が不足する大規模な演算が必要な場合でも、ユーザー側の環境にサーバーを構築することで、外部に依存しない処理環境が構築されました。いわゆる「クラサバ (クライアント/サーバー モデル)」の時代です。

クラサバ (クライアント/サーバー モデル)の時代


しかし、サーバーをユーザー環境に設置するということにはいくつかの問題がありました。

  • 演算量の増加に備えてスペックの高いシステムで構成する必要があり、初期投資が大きい
  • ハードウェア・ソフトウェアの保守をユーザーが行う必要がある

この問題を解決する方法として、クラウドが脚光を浴びます。
クラウドの世界では、マイクロソフトなどのクラウドサービス提供者から必要な機能を必要な時間だけ購入して利用します。コンピューター黎明期と同じモデルです。
必要な能力を必要な時間のみ購入するので、初期投資が大きいというコスト的な問題は解消します。
また、ハードウェア・ソフトウェアの保守の多くも、クラウドサービス提供者が行ってくれるため、ユーザーの負担は大きく改善されます。
しかし、全てをクラウドに移行するには、障害となる問題もあります。特に直面しやすい問題は下記の点ではないでしょうか。

  • 応答速度第一。クラウドと通信していては遅すぎる
  • データ量が膨大で、ネットワーク処理が追いつかない
  • セキュリティポリシー上、データを外部に送信することが許可されない

ユーザーから離れたクラウドの環境にシステムが存在する上で、切り離すことの出来ない問題です。何か手立てはないでしょうか。

解決策があります。
「ユーザー側(=エッジ)で処理をしよう」

ユーザー側(=エッジ)で処理をしよう


IoT Edge とは

まさに名前の通り、エッジ側での IoT です。
クラウドで提供していた IoT 処理の一部をユーザー(エッジ)側に設置したコンピューターで処理をします。それにより、先程挙げた問題が解消するかもしれません。

  • 応答速度第一。クラウドに送信していては遅すぎる
    ⇒ デバイスと同じローカルネットワーク上で処理できます。
  • データ量が膨大で、ネットワークが追いつかない
    ⇒ 事前にフィルタリングや集計処理を行うことで、クラウドへのデータ送信量を削減できます。
  • セキュリティポリシー上、データを外部に送信することが許可されない
    ⇒ 機微データの匿名化(マスキング)後やフィルタで除外した後に、クラウドへ送信することができます。

IoT Edge の仕組み

Azure IoT Hub はクラウドから離れたデバイスのコントロールは可能です。しかし、動かしたい処理は通常の IoTデバイスでは収まりきれない大きな規模になります。エッジ側に設置した IoT Edge 機器をどのように管理するのか探ってみましょう。

モジュール

IoT Edge で処理するサービスをモジュールと呼びます。執筆時点では下記のモジュールが提供されています。

  • Azure Stream Analytics
  • Azure Machine Learning
  • Azure Function
  • カスタムモジュール

Azure Stream Analytics
Azure IoT Hub や Azure Event Hubs を使用したことがある方の多くは、データの振り分けや集計で利用するため Azure Stream Analytics をセットで構成していると思います。この機能をそのままエッジ環境で実行します。そして、IoT Edge の Stream Analytics はクラウドの Azure Stream Analytics を踏襲しているので、クエリの記述方法などは同じです(クラウド版とエッジ版では入出力先のシステムが異なるので若干の修正は必要です)。

Azure Machine Learning/Azure Functions
Azure Machine Learning でデータの分析や、Azure Functions でデータの変換などクラウドの API を呼び出して行っていた処理を、IoT Edge 上で実行できます。クラウド上で作成した Azure Machine Learning のモデルや Azure Functions の関数をエッジで実行できるので、今までの資産を有効に利用することが出来ます。また、クラウドへの通信がなく、ローカルネットワークの中で処理が完結するのも大きなメリットです。

カスタムモジュール
Azure Stream Analytics や Azure Machine Learning、Azure Functions では処理できないようなオリジナルのサービスでも、カスタムモジュールとして実行することが可能です。もちろん、Azure クラウドで提供されていないサービスでも可能です。


モジュールツイン

クラウドの場合、アプリケーションの開発者はクラウド上での各サービスに対して、直接アプリケーションを展開することが出来ました。しかし、IoT Edge デバイスは開発者の環境から直接つながるとは限りません。どのようにモジュールを IoT Edge で実行できるようにするのでしょうか。
それには、モジュールツインと呼ばれる機能を利用します。
Azure IoT Hub にはデバイスツインという機能があります。これはクラウド側で設定したデータをデバイスに送信し、デバイス側で更新されたデータをクラウドに反映することが出来ます。
ピンと来た方もいらっしゃると思いますが、デバイスツインと同じようにクラウドで更新したモジュールをデバイスに送ることができれば、開発者はクラウドのモジュールを更新するだけで、IoT Edgeで動作するモジュールを更新することが出来ます。この機能をモジュールツインと呼びます。
IoT Edge はモジュールツインにより必要なモジュールを実行することが出来ます。

IoT Edge のこれから

「クラウドの機能をエッジで」というと、難しく大変なイメージがあるかもしれません。
しかし、IoT Edge は Docker というコンテナ仮想技術で構成されています。モジュール開発は既存の技術で可能です。また、IoT Edge 上で動かすモジュールは Azure ポータル上で管理できます。
「そのままデータをクラウドに送信するには問題がある」ということで、IoT の世界に入ることを躊躇していた方は、その問題を解決する方法としてIoT Edge を使用してみませんか。



次回予告
  • Virtual Machines ディスクの暗号化



お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録