mBaaSはアプリ開発におけるサーバサイドの面倒ごとをまるっと面倒みるサービスになりますが、誰もが気にするのがパフォーマンスではないかと思います。多くのアプリで利用されていますので、幾つかアプリが増えたところで大きな影響はありませんが、それでも多くの方がパフォーマンスを気にされています。
ニフティクラウド mobile backendとしては公称している数字はありませんが、今回は試しにデータの保存にどれくらい時間がかかるのか試してみました。こちらの実験は非公式なもので、あくまでも参考データになります。
ネットワークについて
最もパフォーマンスに影響を及ぼすと思われるのはネットワークになります。今回のネットワークはdocomo回線でダウンロードが3.12Mbps、アップロードが2.98Mbpsとなっています。
スクリプトについて
実行スクリプトですが、最初にデータストアに100件登録し、その登録データを取得した時間をアップデートするものとなっています。
var times = 100; for (var i = 0; i < times; i++) { var data = new DataStore(); data.set("start_time", new Date); data.set("times", i); data.save().then(function(obj) { obj.set("end_time", new Date); obj.save(); }); }
スクリプトを実行後、登録開始時間と終了時間の差をチェックしています。
実行結果
実行結果は次の通りです。単位は秒になります。
最初の保存までにかかる時間 | 保存後、データを取得した時間 |
---|---|
0.417 | 1.578 |
1.324 | 2.484 |
0.349 | 1.504 |
1.020 | 2.180 |
0.286 | 1.464 |
かなりばらつきが見られます。平均としてはデータの保存までが0.6792秒、保存したデータを取得するまでは1.842秒になります。データを保存するだけであれば、0.6秒程度なのですぐに完了することができそうです。その後、保存したデータを使って次の処理につないだりすることを考えると、1.8秒待たされることになります。
結果から分かること
1件、1件のデータ保存であればmBaaSを使っていてストレスに感じることはあまりないかと思います。ネットワークは非同期処理になりますので、保存処理自体はバックグラウンドで行っておけば良いでしょう。10件、100件といったデータをインジケータを出しつつ同期で保存するといった処理はユーザストレスになるかと思います。
なお、実行速度はネットワーク速度に大きく依存します。mBaaSを使ったデータ保存処理にかかる時間よりもLTEや3Gといったネットワーク回線を気にした設計にすべきでしょう。とはいえ、リアルタイム通信レベルのチューニングが求められる場合、保存後レスポンスが返ってくるまでの1.8秒は長くなってしまうと思われます。使い方にご注意ください。
mBaaSを使われる際の参考にしてください!