ニフクラmBaaSお役立ちブログ

スマホアプリ開発にニフクラmBaaS。アプリ開発に役立つ情報をおとどけ!

データストアのパフォーマンスをチェックしてみた

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を使われる際の参考にしてください!