世界のやまさ

SEKAI NO YAMASA

Windows Azure モバイル・サービスでパフォーマンス監視なら NewRelic がオススメ

この投稿は Windows Azure Advent Calendar 2013 の19日目の記事です。 前日は shosuz さんの Windows Azure Mobile Services 高度な設定について でした。

Windows Azure モバイル・サービス はその名の通り、モバイルアプリケーションを開発するにあたって非常に便利なサービスです。
稚拙ながら BuildInsider にて iOSアプリを5分で作ろう! という記事を書いています。
本当に5分で作れます。先日JAZUG仙台にて実演しました。無料で試せますので、是非皆様試していただければと思います。

さて、今回はモバイル・サービスのパフォーマンス監視ということで、New Relic を紹介したいと思います。

New Relic とは

レスポンスタイム 等の統計を収集して、New Relic のサイトにて見やすく表示してくれるサービスです。モバイル・サービスだけでは無く、.NET アプリケーション や、Ruby, Node.js 等の様々な言語に対応しています。

インストール方法

Use New Relic to monitor Mobile Servicesを参考に設定していきます。残念ながら今は英語のみのようですので、見出しに沿って補足していきます。

Windows Azure ストア から New Relic を契約する(Sign up for New Relic using the Windows Azure Store)

Windows Azure ポータル から Windows Azure ストア を表示し、 New Relic を追加します。

f:id:nnasaki:20131217034155p:plain

f:id:nnasaki:20131217034407p:plain

f:id:nnasaki:20131217034722p:plain

f:id:nnasaki:20131217035054p:plain

アドオンに表示されるようになります。

f:id:nnasaki:20131217035317p:plain

New Relic モジュールをインストールする(Install the New Relic module)

インストールするためには、git を有効にしておくことと、Node.js をインストールする必要があります。
git の有効化は Store server scripts in source control を参照してください。詳細は今回の趣旨と外れるので省略します。(日本語の情報はいずれ記事にする予定です)
Node.js のインストールについては、http://nodejs.org/ から [Install] をクリックするとインストーラーがダウンロードできる。

New Relic は次のコマンドを実行して、モジュールを追加します。hogehoge の部分は適当ですので環境に合わせて変えてください。 重要なのは service ディレクトリにて npm を追加することです。

git clone http://hogehoge
cd hogehoge/service
npm install newrelic
git add .
git commit –m "added newrelic module"
git push origin master

ローカルの git リポジトリは次のディレクトリ構成になります。

.
└── service
    ├── api
    ├── node_modules
    ├── scheduler
    ├── shared
    └── table

管理ポータルにて New Relic を有効にする(Enable New Relic developer analytics for the mobile service)

ここは原文の通りに Windows Azure 管理ポータル から、先ほどストアで購入した New Relic を有効にするだけです。次のようになっていれば良いです。

f:id:nnasaki:20131217041546p:plain

New Relic のダッシュボードを確認する(Monitor the mobile service in the New Relic dashboard)

Windows Azure 管理ポータル の アドオン から、New Relic のダッシュボードにアクセスできます。ダッシュボードは Windows Azure 管理ポータル外の New Relic のWebサイトになりますが、クリックするだけでシングルサインオン出来ます。

f:id:nnasaki:20131219205321p:plain

最初は次のように何も表示されません。

f:id:nnasaki:20131217043315p:plain

サンプルアプリにデータを追加したり、表示を更新したりガチャガチャいじってみましょう。

f:id:nnasaki:20131217043952p:plain

操作しているうちにログが増えてグラフが更新されていきます。大体処理時間が 40 ms と非常に高速です。

f:id:nnasaki:20131217044715p:plain

get, post, patch と各操作ごとの詳細を見ることが出来ます。

f:id:nnasaki:20131217045042p:plain

f:id:nnasaki:20131217045230p:plain

f:id:nnasaki:20131217045313p:plain

f:id:nnasaki:20131217045410p:plain

ベンチマークをしてみる

これだけじゃつまらないので、モバイル・サービスに負荷をかけてみます。今回は Load Impact という負荷テストをしてくれるWebサービスを利用しました。

まず、モバイル・サービスのTableの設定で、GET を誰でも出来るようにします。

f:id:nnasaki:20131217055304p:plain

ブラウザにて https://hogehoge.azure-mobile.net/tables/TodoItem を入力して、表示されるか確認します。次のようにJSONで値が表示されれば問題ありません。

f:id:nnasaki:20131217055712p:plain

loadimpact にて、https://hogehoge.azure-mobile.net/tables/TodoItemを入力してテストをします。設定等は適当にAWSのEC2東京から計測してみました。

f:id:nnasaki:20131217060217p:plain

画像には表示されていないですが、レスポンスタイムの平均は293.72msでした。ちょっと遅いですね。日本リージョンが出来るとかなり改善されると思います。テストの詳細はこちらから確認出来ます。

New Relic のほうは、max 433 rpm, avg 88.0 rpmで、処理時間も avg 9.43ms と結構裁けています。

f:id:nnasaki:20131217060918p:plain

ちなみに、Windows Azure 管理ポータル のダッシュボードは次のようになっていました。あまりベンチマークやりすぎると無料枠を超えてしまうので注意しましょう。

f:id:nnasaki:20131217061938p:plain

まとめ

New Relic を使用することで、どのAPIがいつ・どれぐらいの使われていて、どのくらい速度が出ているか?等の情報が簡単に取得できます。 今回ご紹介した内容はすべて無料で試せますので、是非トライしてみてください!

明日は papeMK2 さんです。