IBM Bluemix のサードパーティサービスの1つである Load Impact を紹介します:
2015092400


このサービスは単純にウェブサイト/ウェブサービスに負荷をかけて、その時のパフォーマンスを測定するサービスです。負荷をかける対象は Bluemix 上のランタイムでも、そうでなくても構いません。


Load Impact サービスは Bluemix 上では "DevOps" カテゴリに分類されています。このサービスは特定のランタイムにバインドして利用するものではないので、カタログページから直接選択して追加することで利用可能になります:
2015092401


Load Impact サービスの説明ページです。"Free"(無料)利用の条件が表示されているので確認して追加してください:
2015092402


Load Impact サービスを追加した後、ダッシュボード画面から追加した Load Impact サービスを選択すると、このような画面が表示されます。"OPEN LOAD IMPACT DASHBOAD" と書かれた箇所をクリックして、Load Impact のダッシュボード画面に移行します:
2015092403


サービスを利用するには最初にログインする必要があります。ここでは新規にアカウントを作成することもできますし、既にアカウントをお持ちであればそれを指定することもできますし、また Google や Github といったソーシャルサイトのアカウントをお持ちであればそれらとの OAuth を使ってログインすることもできます。お好きな方法でログインしてください:
2015092404


ログイン直後にこのような画面が表示されるはずです。この画面をスキップして詳細なテスト設定を行うこともできますが、まずはこの簡易機能を使ってテストしてみましょう:
2015092405


今回、テストする対象はこちらのサイトとします(皆さんがお作りになったサービスを指定しても構いませんが、他の方が作ったウェブサイトの URL を勝手に指定することはご迷惑をかけることになりかねないので控えてください):
http://fx.mybluemix.net/
2015092406


このサービスは先日、私が作って紹介したリアルタイム為替情報の REST API サービスです。IBM Bluemix 上で動いています。一般的には「ウェブサイト/サービスはリクエストからレスポンスまで2秒待つと、ユーザーは長く感じる」と言われているので、レスポンスタイムが2秒を確保できているかどうかをテストしてみたいと思います。また最大同時接続ユーザー数は30を想定します(つまり30ユーザーが同時にアクセスしてきても、このサービスは2秒以内にレスポンスを返せるか?をテストで計測する指標とします)。

では、このサービスの URL(http://fx.mybluemix.net/) を URL フィールドに入力します。同時に最大接続ユーザー数(Max VUs)を "30" に、Duration(mins) を "3" にします(つまり3分間で30ユーザーのテストをする、という指定をします)。最後に "Run test" と書かれたボタンをクリックして、テストを開始します。作業はこれだけ、簡単ですね:
2015092407


しばらくするとテストが始まります。最初に同時接続(仮想)ユーザーの準備を行います:
2015092401


テストが始まると、このサービスを提供している場所(バージニア州 Ashburn)から、目的のサーバー(下図ではテキサス州 Dallas)までの地図が表示されます。このレイテンシーがテスト結果に影響することを考慮してください:
2015092402


またテスト途中までの結果も順次表示されていきます。少しずつ接続ユーザー(青)を増やしながら、それぞれの回でどれくらいのレスポンスを実現できたのか(緑)が分かります:
2015092403


今回の設定ではテスト開始から3分後に最大接続ユーザーのテストが行われ、その後少しずつユーザーを減らしてテストが終了します。終了すると左上に "Finished" と表示されます:
2015092404


画面を下にスクロールすると、最終テスト結果がグラフ表示されています。一瞬危ういテスト回もありましたが、どうやらこのサービスは30ユーザー程度であれば、2秒どころか1秒以内にレスポンスを返せることがわかりました。リアルタイム性を重視するサービスなので、これは一応合格だと思います。さすが Bluemix 、という所?
2015092405


更に下にスクロールすると、更に細かなテスト結果も表示されています。ほぼ何の準備もせずに、URL と最大接続ユーザー数の指定をしただけで、このレベルの負荷テストが実現できた、ということがわかります:
2015092406


Load Impact はもっと細かなテスト項目の指定などもできますが、そこまでしなくてもある程度の負荷テストが実現できるツールです。Bluemix のようにアジャイルに機能を追加してアプリケーションを開発できる環境ですと、ついつい変更による負荷の影響を忘れがちになってしまいますが、そのようなことがないように Load Impact サービスを1つアクティブにしておくといいかもしれません。