この連載は、報道目的の実験を行い、その結果を掲載するものです。内容には十分注意をしていますが、記事内容を試すことは自己責任で行ってください。

 ここは、ネットワーク関連企業「BPネットワークス」が誇る本社の超高層タワービル…の地下3階、機械室の隣にある第二R&Dセンターである。片岡さんは、新聞や雑誌を開きネットワークに関する記事を読んでいる。

片岡:へぇー、ポケベルのサービスが終了するのか。

神崎:ポケモンですか?

片岡:ポケベルを知らないのか?

矢田:私は知っているけど…。簡単に言うと、電話で呼び出す携帯型の無線端末機ね。

神崎:ポケベルが使われていた時代って、携帯電話が普及するより前では。矢田さんって意外と古いんですね。

矢田:私だって使ったことはないわ!最初から携帯電話だったわよ。iモードだけどね。

 3人が盛り上がっていると、いつものように吉田さんが登場した。

吉田:はーい、みなさん。何に盛り上がっているの?

矢田:ポケベルの話題で…。

吉田:それは懐かしいわね。さて、お仕事、お仕事よ。

片岡:今回の依頼は何だ?

吉田:IoT端末を活用したシェアリングサービスのシステムを構築しているB社からの相談よ。B社はMQTTを使って端末からデータを集めて、それを基にサービスの課金を管理するシステムを開発中なの(図1)。IoT端末とRaspberry Piのゲートウエイでプロトタイプを作ったらうまくいったので、規模を徐々に大きくしながら試験運用中なの。

図1●トラブルが発生したB社のシステム
シェアリングサービスの情報を集めるためにMQTTを使っている。IoT端末からのデータは、MQTTメッセージとしてMQTTクライアント(パブリッシャー)経由でいったんMQTTサーバー(ブローカー)に集められた後に、MQTTクライアント(サブスクライバー)のシステムが受け取る。だが、メッセージの順番が前後したり欠落したりする問題が発生していた。
[画像のクリックで拡大表示]

矢田:何かトラブルでも?

吉田:通常時は問題なく動作しているけど、繁忙時に正しく課金できない不具合が発生したらしいの。調査すると、ゲートウエイとなっているパブリッシャーからのメッセージが多くなってブローカーの負荷が高まるにつれて、サブスクライバーであるサーバーへのメッセージ配信がおかしくなっているらしいのよ。

片岡:MQTTの仕様は出力側のキューを規定していないので、メッセージの到達性や順序を保証できないからな。

吉田:ブローカーの障害でシステムが停止したこともあって、可用性の確保も課題なのよ。

矢田:課金するシステムなのに信頼性がないなんて失格ね。ましてやダウンして使えないなんて。

吉田:でしょ。

神崎:でも、ブローカーに使うサーバーの性能不足が原因なら、サーバーを複数立てたらよさそうだけど。障害対策にもなるし。

吉田:MQTTはサーバー間でデータを同期する仕組みがないから多重化が難しいのよ。だから、混雑時でも確実にメッセージを転送できる、MQTT以外のプロトコルがないか相談があったの。

神崎:MQTTの代わりですか。

矢田:そういえば、以前にAzure IoTとWindows 10 IoTを試したときに、AMQPというプロトコルを使った覚えがあるわ。

吉田:AMQPもMQTTと同じ非同期のパブリッシュ(出版)-サブスクライブ(購読)型モデルで、1対多のメッセージ交換ができるわ。

神崎:そのAMQPを使えば、B社の課題を解決できるのではないでしょうか。同じ出版-購読型モデルなら、今のシステムを大きく変更しないで済みそうです。

吉田:でも、プロトコルが複雑で、MQTTより処理が重そうなの。

片岡:果たして、IoTに向いているのだろうか?

吉田:そこが問題ね。今回のセンター長の依頼は「通信プロトコルAMQPはIoTに向いているか調査せよ!」なのよ。実際にAMQPを動作させてパケットをキャプチャーすれば、プロトコルのオーバーヘッドを評価できるでしょ。

片岡:機器やソフトは?

吉田:オープンソースでRabbitMQというソフトがあるから、それをLinuxマシンにインストールしたらどう?じゃあ、実験お願いね。

▼iモード
NTTドコモが開発した携帯電話向けのIP通信サービス。
▼IoT
Internet of Thingsの略。
▼シェアリングサービス
自動車や自転車のシェアリング、民泊などのサービス。施設の入出場や鍵の管理など、IoTを活用した無人のサービスが増えている。
▼MQTT
MQ Telemetry Transportの略。
▼出力側のキューを規定していない
キューはデータを一時的に保持するデータ構造の1つ。先に入ってきたデータから順番に出力する先入れ先出し(FIFO:First In First Out)のリスト構造で保持する。だが、MQTTの仕様で規定していないため、データの到達性や順序が保証されない。
▼AMQP
Advanced Message Queuing Protocolの略。メッセージ交換のためのアプリケーションプロトコルの1つ。Raspberry PiにWindows 10 IoT Coreをインストールし、マイクロソフトのAzure IoTと接続した場合、その通信には、HTTPやMQTTと並んでAMQPを選択できる。
▼RabbitMQ
AMQPを実装したオープンソースのソフト。https://www.rabbitmq.com/を参照。

この先は有料会員の登録が必要です。「日経NETWORK」定期購読者もログインしてお読みいただけます。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら