前回は、どのようなプロトコルを採用するにしても、構築するIoTシステムの置かれる状況に合わせてさまざまな欠点をカバーする必要があることを記載しました。
いくつかのプロトコルや転送手段が登場してきましたので、それらを3つに分類し、それぞれ開発のしやすさや IoT で求められる要件にどれだけ応えられるかを表にしてみます。
IoTで利用されるプロトコルのメリット・デメリット |
IoTと言うと、MQTTかHTTPが採用されることが多いでしょう。
例えばHTTPは汎用性が高く、IoTに限らずさまざまなシーンで使われます。MQTTは非常に軽量で、不安定なネットワークに対する考慮もされており、IoTシステムでは魅力的なプロトコルと言えます。
さらにもう一つの別の転送手段として、ファイル転送にも注目すべきです。
ファイル転送は、IoTで特に注目されるということは少ないですが、ファイルシステムという非常に強力で基本的な考え方に則るからこその使いやすさや、拡張しやすさがあります。
そこで、IoTシステムでファイル転送を採用するとき、どのような使い方ができるか、または考慮が必要かを検討していきます。
IoTシステムでのファイル転送
まずは、作ろうとするシステムをイメージしやすくするために、ファイル転送を行うケースを2つほど図にしてみます。
センサーデータがそもそもファイルに出力される
送信デバイス内でセンサーデータを随時ファイルに書き込むパターン |
センサーデータが特定のファイルに次々と追記されていくイメージです。
センサーデータをある程度まとめて転送したい
送信デバイス内でセンサーデータを加工してまとめて転送するパターン |
センサーデータをある程度フィルタリングしたり、集計した結果をファイルに出力したりと、ある程度まとめて転送するイメージです。
ファイル転送を行うための考慮ポイント
ではこれらのケースでファイル転送を行うときに、どのような考慮が必要か検討していきましょう。
データの欠損
例えばUsing Gatewayパターンで、データをある程度まとめて送る、フィルタリングしてから送る、集計してから送る、などIoTゲートウェイにルーター以上の役割がある場合、一度に送るデータの重要性は高まります。
データの欠損をできるだけ防ぐ方法としては、データを送る側と、受け取る側でファイルサイズ、あるいはハッシュ値などを突き合わせるという方法が考えられます。
通信速度
ファイル転送に限った話ではありませんが、いわゆる回線が細いという状況では、データの圧縮が欠かせません。
また、例えば大量に溜まったログファイルを送りたいとなったときに、データを受けるサーバーに掛かる負荷を分散したり、回線の専有を防いだりするために、データを分割して送ることを検討する必要が出てきます。
マシンリソース
ファイル転送のときに考慮すべきなのは、転送に時間がかかることで、後続のデータ生成処理が滞ってしまうことです。
IoTゲートウェイのようにマシンリソースが一般的なサーバーよりも限られている場合、圧縮、暗号化、などを含めて転送にかかる時間は増えると思います。
そのような状況で、同じファイルに次々センサーデータが上書きされてしまうというような状況の場合、データの出力を阻害しないような工夫が必要になります。
例えば、転送の直前に転送対象のファイルをリネームするなどの対応が考えられるでしょう。
到達保証
TCP上のプロトコルであれば、データが到達したかどうかは基本的には保証されます。
そのため、一連のデータ送信で、必要なデータを重複なく、かつ欠けることなく送ることができたのかを保証できることが重要になります。
例えばネットワークが切断され再接続後、データの再送信を行ったときに、再送信する範囲が間違うことを防ぐ必要があります。
リアルタイム性
ファイル転送を使用して高頻度でデータを転送し、受信側のサーバーで常に同じファイル名でデータを受け取ると、データを捌ききれていないのに上書きされてしまうという状況が発生しかねません。
そのような問題を回避する方法としては、受信するファイル名を少しずつ変えて出力し、データの分析が終了したらファイルを削除するなどが考えられます。
また、別の観点として、大量のアクセスに耐えられる構成かどうかを考慮する必要もあります。
ファイル転送であれば、一度データはファイルシステムに出力されますので、その後をどうのように分散させるかも考える必要があります。
考慮ポイントをまとめると、下図のようになります。
IoTシステムにおけるファイル転送時の考慮ポイント |
* * *
IoTシステムでは、どのようなプロトコルを採用するにしても、不安定なネットワークや、マシンリソースなど、さまざまな制約をクリアしていくために工夫が必要になります。
これまでに述べてきたように、ファイル転送についても適切な工夫を行うことで、IoTシステムにマッチした転送手段として採用することができます。
IoTという文脈ではさまざまなシーンが想定され、どんなシーンでもこれを使えば良いというような画一的な転送手段が決まりにくいので、広くさまざまな選択肢を検討していくことが重要です。
著者紹介
田中 健一 (TANAKA Kenichi)
- 株式会社アプレッソ 開発本部 開発部 開発エンジニア
データ連携ミドルウェア「DataSpider Servista」の IoT連携機能の開発をはじめ、エッジコンピューティング分野での研究開発に携わる。
現在はその経験を生かし、セゾン情報システムズと共同で開発を進めている「HULFT IoT」では、ユーザーインタフェースやファイル転送の管理機能を開発。