コラム

IoTの高度化を加速するエッジコンピューティング

IoTシステムでは、収集したデータをすべて送信しようとすると、大容量の通信回線が必要となり、ネットワークに遅延が発生する恐れもある。データ容量が大きければ、データの破損やコストの増大化を招くリスクもある。そこで最近注目されるのが、IoTデバイス側に処理機能を持たせるエッジコンピューティングだ。

IoTシステムにつきまとうデバイスと通信の課題

IoTシステムでよくある構成は、各種センサーを搭載したデバイスでデータを収集し、それを通信回線経由でサーバーに送信して分析処理を行い、監視する機器の不具合を予兆したり、製品の品質を高めたりといったアクションにつなげる構成だ。データ収集という重要な役割を担うデバイスは一般的に、センサーのほか、CPUとメモリ、通信機能を備えている。だがほとんどの場合、デバイスのCPU性能は低く、メモリ容量も小さいなど、コンピューティングリソースは限られている。そのため収集したデータをそのままの状態でサーバー側に送信するケースも少なくない。

 

しかしデータをそのまま送信すると、データ通信容量が想定以上に大きくなる可能性がある。1時間に1回、あるいは1日1回というペースでデータを収集する場合は気づきにくいかもしれないが、リアルタイムで監視する場合などデータを流し続けるときは特に注意しなければならない。

センサーデバイスからサーバーへ大容量データが流れているIoTシステムを検証してみると、目的の分析処理には不要なデータが大量に見つかることがある。本来ならばデバイス側でデータをクレンジングし、必要なデータのみを送信することが望ましい。とはいえ、コンピューティングリソースに限りがあれば、そうした処理も難しい。

 

一方、リソースに制限があるデバイスには運用管理面の課題が生じることもある。例えば一度構築したIoTシステムの接続先を変更するといった作業がしばしば発生すると考えられるが、設定したデータをデバイスにプッシュ、あるいはデバイス側でダウンロードできないとしたらどうだろうか。屋外に設置した数百台、数千台のデバイス設置場所をすべて回り、1台1台の設定を変更する必要が出てくるはずだ。これではIoTシステムの運用管理担当者にとんでもない業務負荷がかかることになる。

 

もちろんセンサーデバイスには、できる限りコストをかけたくない。とはいえ、不要なデータを送信して通信費がかさんだり、運用管理担当者の作業工数も含めた運用コストが増大したりといった事態になれば、たとえ導入コストは抑えたとしても、結果的にトータルコストが増えることになりかねない。

エッジコンピューティングで処理分散を図る

こうしたデバイスの課題を解決するために、最近ではデバイスに処理機能を持たせたエッジコンピューティングが注目されている。デバイスそのものにリソースを持たせるのではなく、複数のデバイスから取得したデータを一時的に収集してサーバーに送信する役割を持つIoTゲートウェイを使う場合も含まれる。いずれにせよ、デバイスのすぐそばに処理機能を分散配置することを意味している。

 

デバイスやゲートウェイにエッジコンピューティングの機能を持たせると、センサーから収集したデータをクレンジングし、必要なデータのみに絞り込んでからサーバーなどへ送信できるようになる。これにより、通信回線を通じて送信するデータ容量が小さくなり、無駄な通信コストを削減できる。屋外の不安定な通信環境で利用するデバイスならば、データ容量を小さくすることでデータの破損・欠損も最小化できる。ネットワークの遅延も起きにくくなり、データ分析後の処理結果をセンサーデバイスが設置された機器へ素早くフィードバックできる。データ容量が小さくなったぶん、センサーのデータ取得頻度を上げて、より精密なデータ分析が可能になるケースもある。

 

デバイスからサーバーへの通信回線が逼迫していたり、サーバー側の処理負荷が高かったりするIoTシステムでは、エッジコンピューティングを取り入れることでIoTシステム全体の性能を大きく向上させる可能性がある。しかしながら、エッジコンピューティングにも留意すべき点はある。

 

まずデバイスやゲートウェイには、ある程度のコンピュータリソースが必要になる。最低でもデータを処理するプログラム、データを蓄積するデータベースが稼働するだけのCPU性能とメモリ容量は不可欠だ。そのプログラムやデータベースを開発するための開発環境も求められる。それらのハードウェア/ソフトウェア基盤を搭載するデバイスやゲートウェイは、それなりにコスト高になることは覚悟しなければならない。

また、プログラムやデータベースを開発するためのコストも計算に入れなければならない。自社で開発するにしても、ベンダーに開発を委託するにしても、コストは増えることになる。ただしサーバー側のデータ分析処理やビジネスロジックなども含めたIoTシステム一式を開発する場合は、プログラムの一部をエッジ側に分散することで、コストをある程度相殺できる可能性はある。

 

このようにセンサーデータを収集してサーバーに送信するだけのIoTシステムよりは、導入のハードルが高いのは確かだ。それでも数年間の運用管理にかかるコストも含めて比較すると、エッジコンピューティングにしたほうがリーズナブルな場合も多い。

図1 ● 従来のIoTシステムとエッジコンピューティングによるIoTシステムの違い
図1 ● 従来のIoTシステムとエッジコンピューティングによるIoTシステムの違い

ピンチアウトで拡大

エッジコンピューティングを容易に実現するAzure IoT Edge

エッジコンピューティングのメリットは理解できるものの、エッジコンピューティングに対応できるデバイスやゲートウェイを開発するのは、やはりハードルが高い ―― そう考える企業も少なくないだろう。しかし、諦めてしまうのはまだ早い。最近はエッジコンピューティングを容易かつ安価に実現するためのソリューションも登場しつつあるのだ。

 

その一つが、マイクロソフトが提供している「Azure IoT Edge」だ。このサービスは、これまでクラウド上で行っていた分析処理やビジネスロジックをデバイス側で実行できるようにするものである。IoTシステム用に開発したカスタムアプリケーションとAzureのサービスをコンテナ化し、デバイス上で実行する「IoT Edgeモジュール」、IoT Edgeモジュールの実行と管理を行う「IoT Edge ランタイム」、およびデバイスをリモートで監視・管理できる「IoT Edge クラウド インターフェイス」の3つのコンポーネントから構成されている。

 

IoT EdgeモジュールはDocker互換のコンテナとして実装されており、OSはWindowsとLinuxに対応。開発・実行環境にはJava、.NET Core 2.0、Node.js、C、Pythonをサポートしているので、すでに習得している言語を使ってコーディングできる。またAzure上のサービスとして提供されているAzure Functions、Azure Stream Analytics、Azure Machine Learningなどの機能も、デバイスのオンプレミスで実行可能だ。

 

Azure IoT Edgeを利用してエッジコンピューティングを実現すると、さまざまなメリットが得られる。例えばセンサーデバイスから収集したデータを、通常時はAzureのクラウドにアップロードして分析処理を行い、異常を検知し迅速な対応が要求される緊急事態が発生した場合はデバイスから直接制御するといった使い方が可能になる。当然、大容量の生データではなく、データをクレンジング・集計してある程度の分析処理を行い、結果として得られた有用なデータのみを送信するといった利用には最適だ。

 

無論、IoTシステムのすべてがエッジコンピューティングに適しているわけではない。だが、これまでIoTシステムでネックとなっていた課題を、エッジコンピューティングが解決してくれる場面は、確実にある。

図2 ● Azure IoT Edgeの概念図
図2 ● Azure IoT Edgeの概念図

ピンチアウトで拡大

富樫純一

富樫純一 / Junichi Togashi

ITジャーナリスト/テクニカルライター
米国IDGグループの日本法人、旧IDG Japanに入社。
「週刊COMPUTERWORLD」誌 編集記者、「月刊WINDOWS WORLD」誌 編集長、「月刊PC WORLD」誌 編集長などを経て2000年からフリーに。以来、コンシューマーからエンタープライズまで幅広いIT分野の取材・執筆活動に従事する。技術に加え、経営、営業、マーケティングなどビジネス関連の執筆も多い。