こんにちは。スプラシアでSREを担当している鈴木です。
弊社ではインフラ環境の構築にAWSを利用しています。AWSでは環境を構築する以外にも負荷テストを実施するためのテンプレートも用意されています。今回はAWSを利用した負荷テストの実現方法についてご紹介します。
CloudFormationスタックの作成
AWSには様々な課題を解決するためのドキュメントが沢山用意されています。今回紹介する負荷テストもその中の一つを利用します。
https://aws.amazon.com/jp/solutions/implementations/distributed-load-testing-on-aws/
上記のURLへアクセスするとAWSで分散負荷テストを実現するための手順が紹介されています。
今回は仕組みなどの詳細は割愛しますがアーキテクチャに興味が沸いた時にはこちらのページを参考にしてみてください。
ページ内中ほどの右側にあります、
AWSでの分散負荷テストにある「AWSコンソールで起動する」をクリックしてください。
ログインしていない場合はログインした後にスタックの作成というページへ移行します。
簡単に説明をしますと、AWSにはCloudFormationといって環境構築やAWSの機能を用いた様々な構成をテンプレートのような形で作成することが可能です。
スタックはそのテンプレートのような位置づけになり、
今回は分散負荷テストのスタックを作成する形になります。
最初の画面ではデフォルトのままで「次へ」を選択します。
次にスタックの詳細を指定するページに移ります。
スタック生成ページ
スタックの名前は自身が分かりやすいように「LoadTest」のような名前を指定します。
それ以外に必須のパラメータは下記の2つです。
・Console Administrator Name
負荷テスト管理画面のadmin権限を持つユーザーネームです。ログインする時に必要になります。
・Console Administrator Email
admin権限所有者のメールアドレスを入力します。このメール充てに管理画面のアクセス情報などが送られます。
他にはVPCやサブネットの指定などもありますが今回は不要のため、このままの状態で「次へ」をクリックします。次のスタックオプションの設定と、レビューの部分はデフォルトのまま進め、レビューページの最後にあるチェックボックスにチェックを入れた後に送信ボタンをクリックします。
この後はCloudFormation側で構築が始まりますので、メールを受信するまで待ちます。
ダッシュボードへログイン
タックを作成するとしばらくしてメールを受信します。
受信するメールの内容
そのメールには負荷テスト用のURLとユーザーネーム(1で指定したもの)とパスワードが記載されています。URLにアクセスしてユーザーネームとパスワードを入力するとテストページへログインします。
初回ログイン時はパスワードの更新を求められますので任意のパスワードに更新します。
パスワード更新時にエラーが出た場合は文字数を増やしたり記号を追加して再度試してみてください。
負荷テストの実施
最初にログインをすると画像のようなページが表示されます。
テスト結果の確認
Refreshボタンなどをクリックしてページを更新しているとそのうちテストが終了し、ステータスがCOMPLETEになります。ページ中央でTest Resultsの部分にテストの結果が記録されています。
負荷テスト結果画面
結果では平均レスポンス時間や平均レイテンシーなどを確認したり、リクエスト総数と成功・失敗した数、秒間何回リクエストを送ったかなどを確認することができます。
グラフも記載されており、今回の図ではRampUpが1分のためVirtualUsersが1分かけて最大値に達し、Hold Forで指定した1分間維持している状態になっています。
おまけ
弊社では上記の負荷テストを行いつつ、RDSを利用する時はPerformance Insigthsを確認して不要なSQLが発行されていないか、EC2のメモリ、CPU、ロードアベレージが高くなっていないか等を確認し、必要に応じてAutoScalingの設定やスペックを上げたりパラメータの調整などを行ってメンテナンスをしています。
まとめ
上記のようにAWSでは負荷テスト専用の機能はないものの、CloudFormationを利用して負荷テストの環境を構築することができます。負荷テストにはJmeterを使うケースは多いかもしれませんが、このツールでは自分でサーバーを用意してテストをする必要もなく結果も見やすくなっているためJmeterを使っている方には特におすすめです。
是非試してみてください。