こんにちは、再びishida(@kojiisd)です。
本投稿はQiitaのAWS IoTアドベントカレンダーの11日目になります。
8日目「AWS IoTから NumericなRangeKeyを持つDynamoDBテーブルへput-itemをする方法 - Qiita」からの投稿からの続きとなります。
2015年10月に、AWS re:Invent 2015にて発表されたAWS IoTですが、じわじわと人気が出始めていますね。ブログで「○○と繋いでみた」というような記事を公開している人も増えてきました。
AWS IoTはデバイスとクラウドのセキュリティを確保しつつ、HTTPやMQTTといった様々な通信プロトコルにも対応し、さらに各種AWSサービスへの連携も簡単に可能な、マネージド型クラウドプラットフォームです。
今回、このAWS IoTに対してPub/Subの性能評価を実施し、その結果をまとめてみました。
前提
AWS IoTは、普通のMQTTの仕様に対して、限定的な対応がされています。MQTT v3.1.1とAWS IoTを比較すると、以下のようになります。
AWS IoT | MQTT | |
対応QoS | 0,1 | 0,1,2 |
Retain | × | ○ |
Will | × | ○ |
TLS/SSL | ○ | ○ |
Payloadサイズ制限 | 128KB | 256MB |
順序保証 | × | × |
計測条件/内容
以下の条件で、今回測定をしています。
Clientツール | AWS IoT | |
リージョン | ap-northeast-1 | ap-northeast-1 |
インスタンスタイプ | c4.xlarge | - |
インスタンス数 | 1(Pub/Sub同一インスタンス上で実施) | - |
計測結果
3回ずつ測っての平均値をとりましたが、以下の通りになりました。
Publish | Subscribe | |
QoS=0 | 32273 | 4844 |
QoS=1 | 10512 | 1012 |
*単位は[messages/sec]
- Publishについては約32000msg/secと、十分な性能を出すことができている。
- Subscribeは約4800msg/secと、Publishに比べて性能が出ていない。
SSLを使用したMQTT通信のため、そもそも性能がそれほど出ないのではないかと思っていましたが、予想に反してPublishの性能が良かったですね。
IoTが世間でも頻繁に使われるようになった現在において、如何にAWS IoTが時代を引っ張って行ってくれるか、まだまだ目が離せませんね!
それでは。
Acroquest Technologyでは、キャリア採用を行っています。
- 日頃勉強している成果を、AWS、Hadoop、Storm、NoSQL、SpringBoot、HTML5/CSS3/JavaScriptといった最新の技術を使ったプロジェクトで発揮したい。
- 社会貢献性の高いプロジェクトに提案からリリースまで携わりたい。
- 書籍・雑誌等の執筆や対外的な勉強会の開催を通した技術の発信や、社内勉強会での技術情報共有により、技術的に成長したい。
- OSSの開発に携わりたい。
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
キャリア採用ページ