fog computingとは
この「さまざまなモノやヒトなどからデータを得て処理し、現実世界へフィードバックする」というIoTの一連の活動を支えるには、fogとcloudが分散協調動作を行うfog computingというアーキテクチャが重要になります。
ここで言うfogとは、ヒトに近い場所で動作するモノが相互に連結することで、その場で自律的に動作するモノの集合体を意味します。スマートフォンやスマート家電のような単体でインターネット通信ができる高機能なデバイスから、各種センサーやカメラ・マイクなどの単機能なデバイスまで、さまざまなモノによってfogは構成されます。それらさまざまなモノがデータを交換し適切に連携することで、適切なタイミングで適切なフィードバックを現実世界へ行うことができるようになります。
一方cloudとは、さまざまなfogから得たデータを集め、過去に得たデータやオープンデータ、ソーシャルデータなどとも組み合わせることで、単体のfogだけでは得られない「価値」あるものを生み出し、それを現実世界へフィードバックするために、fogと連結しfogを補完するものを意味します。cloudには仮想サーバや仮想ストレージといったIaaS的な機能だけでなく、データの統合や分析・学習といった高次の機能も含まれます。
すべてのIoTデバイスをcloudに直結するのではなく、fogとcloudで適切に役割分担することで、リソース消費を押さえ不用意な情報漏洩を防ぐことができ、かつ適切に収集されたデータをもとに適切なタイミングで最適なフィードバックを行うことができるアーキテクチャを組み立てることができるようになります。
fogとcloudの役割分担
fog computingでは、「目の前にあるfog」と「雲の向こうのどこかにあるcloud」の特徴を捉え、適切に役割分担を行うことが重要です。極端な場合で比較してみると、fogとcloudには表1のような特徴があります。
| fog | cloud | ||
|---|---|---|---|
| ロケーション | 重要か? | 重要 | どこでもよい |
| 距離 | 目の前 | どこでもよい | |
| ネットワーク | レイテンシ | 低い | 高い |
| 遅延のジッタ | 小さい | 大きい | |
| 利用できる帯域 | 非常に狭い | 大きい | |
| ノード | 数 | 非常に多い | 数えられる程度 |
| 性能 | 低い | 高い | |
| 消費電力 | 非常に気にする | 利用者は気にしない | |
| 多様性 | 様々な機器 | それほど種別は無い | |
| 移動するか? | する | しない | |
| セキュリティ | 物理的 | 盗難や不正利用に注意 | 事業者にお任せ |
| プログラム的 | ノウハウが蓄積されていない | 標準的なプラクティスがある | |
このようなfogとcloudの特徴を踏まえると、表2のような役割分担がfog computingには適していると考えられます。
| fogに適した処理 | cloudに適した処理 |
|---|---|
| リアルタイム性が重要な処理 | 大量データを背景にした分析や学習処理 |
| fog内で得られた情報を組み合わせる処理 | ソーシャルや他のfogと組み合わせる処理 |
| 個人の機微にかかわるデータの処理 | 匿名化されたデータの処理 |
ただし、fogを実装する上では、これまで組み込みエンジニアでなければ意識してこなかった次のようなポイントも重要になってきます。Webエンジニアやクラウドエンジニアにとっては、頭の痛い話かもしれませんね。
fogで追加考慮すべきポイント
- 電力消費をなるべく少なくする
- 通信するデータ量をなるべく小さくする
- 劣悪なネットワーク環境下でも確実にデータが伝達できる
- 移動するヒトやモノに適応できるように、動的なトポロジー変更に適応する
- fog内の機器が物理的に盗難・破損しても、fog全体としては機能が保全される
- fog内の通信が傍受改竄された場合、不正ノードを検出して自律的に排除する
このようなfogとcloudの役割分担や考慮ポイントを意識して、自らのIoTシステムにとって最適なアーキテクチャを構築すると良いでしょう。
