IoTデバイス(エッジ)で動作するAWS IoT Greengrass
目次
エッジコンピューティングとは?
IoT(Internet of Things)によるビジネスソリューションにおいては、時にエッジコンピューティングと呼ばれる技術も利用する必要があります。「エッジコンピューティング(Edge Computing)」とは、クラウドコンピューティングと比較される考え方の一つです。
クラウドコンピューティングはネットワークで接続されているデータセンター等に集約されたサーバーなどでデータを処理する形式ですが、エッジコンピューティングはクラウドから見ると、クラウドへの入り口部分、つまりクラウドの終端部分(エッジ)でデータを処理するように見えるため、エッジコンピューティングと呼ばれています。
つまりは、データ加工や分析など一部の処理をネットワーク末端のIoTデバイスや、その周辺領域に配置したサーバーで行う形式です。
エッジコンピューティングは、要件によってはIoTシステムにおける必須の技術になります。エッジコンピューティングのメリットと課題についてみていきましょう。
エッジコンピューティングのメリット
エッジコンピューティングのメリットは2つあります。
- 圧倒的な低レイテンシー
レイテンシー(latency)とは、ネットワークを経由してデータ処理を開始してから終了するまでの遅延時間を指します。クラウドコンピューティングと比較して、データをその場で処理するエッジコンピューティングは、圧倒的な低レイテンシーを実現することが可能です。クラウドコンピューティングだと、①デバイスでデータ収集②遠方のデータセンターにデータを転送③遠方のデータセンターでデータを処理、という流れで処理します。ユースケースによっては、④処理した結果をデバイスに返す時間も必要です。これがエッジコンピューティングでは、①デバイスでデータ収集②デバイスの近くまたはそのデバイス自身でデータ処理、という流れで処理します。したがって、低レイテンシーが求められる、自動車の自動運転や工場の機械制御など、リアルタイムの管理が必要な場面に必要な技術であるといえます。 - データ漏洩等のリスク低減
エッジコンピューティングと比較してクラウドコンピューティングの方が、遠方のデータセンターへデータを通信する際の経路がどうしても長くなるため、その分攻撃のリスクにさらされやすくなります。したがって、エッジコンピューティングの方がデータ漏洩や盗聴といったリスクが低減されます。
IoT開発はAWSなら素早く実現可能、スタイルズのAWSによるIoTシステム構築サービスはこちら→
エッジコンピューティングの課題
一方で、エッジコンピューティングの課題やデメリットも存在します。それは、デバイスの運用保守の難しさです。
- 運用の難しさ
エッジコンピューティングでは、IoTデバイスや端末などに近い位置に、データを処理するコンピュータを置く必要があるため、利用する拠点が多ければ多いほどハードウェアの数が増えていきます。そのため、ハードウェアの管理コストが増大します。例えばライセンス管理やライフサイクル管理から始め、OSやアプリケーションのパッチ適用といった対応、多様なハードウェアに対して実施していく必要があります。 - 保守の難しさ
エッジコンピューティングで用いられるサーバはハードウェアであるため、何らかのトラブルがつきものです。台風や地震などの災害時には複数のサーバが同時に故障するケースも想定できます。そのため、いちいち設置されている現場に行かずともリモートで保守できるような仕組みづくりが必要になります。
AWS IoT Greengrassによる課題の解決
AWS IoT Greengrassは、AWS IoTを構成するサービスの1つで、AWS上のIoT関連の機能をエッジまで拡張するAWSサービスです。AWS IoTのサービス群には、クラウド側でIoTサービスの中心的な役割を担っている「AWS IoT Core」というサービスが存在しますが、AWS IoT Greengrassはその対になっているサービスと考えるといいでしょう。どのような機能があるのか、具体的に見ていきましょう。
AWS IoT Greengrassの構成
AWS IoT Greengrassは下記のサービスで構成されています。
- Greengrass Core…IoTデバイスにインストールするソフトウェア
- Greengrass Service…Greengrass全体を管理するサービス
それぞれ詳細についてみていきましょう
Greengrass Core
エッジデバイスにインストールして利用するソフトウェアのことを指しています。インストールされたデバイスは「Greengrass Coreデバイス」と呼ばれ、IoTに必要な様々な機能を持つことになります。具体的には下記のような機能を持ちます。
- MQTTブローカーとしての機能…インターネットにつながっていなくても、ローカルのデバイス同士でメッセージのやりとりを行える機能を持つ
- サブスクリプション機能…データの送り先をまとめることができる
- ローカルアクション(Lambda)実行機能…エッジコンピューティングの中核を担う機能で、Greengrass Coreデバイス上でLambda関数を実行することが可能になり、簡単なデータ処理が可能になります。
- デバイスシャドウ機能…デバイスの管理情報をクラウドと同期する機能です。
上記のほかにも、簡単な機械学習エンジンを積むことが可能であったり、製造現場でよく利用される産業プロトコルで他の機器にアクセスするコネクター機能をもつことができたりと、様々な拡張機能を持ちます。
Greengrass Service
エッジデバイスがクラウドと連携できるための各種機能の提供を行います。具体的には、下記のような機能を持っています。
- デプロイ機能…Greengrass Coreデバイス状態の管理やデバイス上に構築したLambda関数のアップデートを行う機能を有しています。
- ルーティング機能…データの送受信先(データのルーティング)先の機能を設定することが可能です。
- グループ管理…多様なGreengrass Coreデバイスをグルーピングし、管理します。運用負荷を下げることが可能になります。
V2によって変わったAWS IoT Greengrass
2020年には、AWS IoT Greengrass2.0と呼ばれる、新機能が備わった新たなバージョンがリリースされています。旧来のAWS IoT Greengrassと比較してどのような違いがあるのかを見ていきましょう。
違い①~オープンソース化
オープンソースとしてGithubでソースコードがすべて公開されています。これにより、デバイスへのインストールが一層容易になるだけでなく、不具合のチェックをユーザー側で実行することも可能になります。また、不具合についてはissueとして改善提案を行うことも可能ですし、自身の要件によって機能を追加開発することが可能になっています。
これにより、細かい要件にも対応することが可能になりました。なお、ソースコードは下記に公開されています。
https://github.com/aws-greengrass
違い②機能分割
多くの機能を有するGreengrassですが、かならずしもデバイスにおいてすべての機能を使うわけではありません。具体的には、Lambdaは実行したいが機械学習エンジンやコネクター機能などの拡張機能は不要、といったケースです。2.0からは機能分割が行われ、自身のユースケースに必要なモジュールのみをデプロイできるようになりました。
違い③~CLIの導入
新たにGreengrass CLI(CLI= コマンドラインインターフェース)という機能が追加されています。CLIコマンドを利用することで、Greengrass Coreデバイスとのコマンドベースでの操作が可能になります。それにより、管理が従来よりも高速かつ簡単になります。
IoT開発はAWSなら素早く実現可能、スタイルズのAWSによるIoTシステム構築サービスはこちら→
まとめ
IoTシステムは要件によってはよりリアルタイムに近い処理が必要になるケースがあります。そのためにはエッジコンピューティングの機能を利用する必要があります。AWSでは、エッジコンピューティングに必要な機能を集約したAWS IoT Greengrassというサービスが提供されています。AWS IoT Greengrassを利用することにより、エッジコンピューティングの運用や開発を簡単に実施できるようになります。要件に応じて、ぜひ利用してみてください。