Grafana Cloud k6 で簡単に負荷試験を運用する
株式会社ギフティ / tokai235
メンバー / テックリード / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
利用プラン | 利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|---|
Pro プラン | パフォーマンステスト機能 | 11名〜50名 | 2024年6月 | C to C |
利用プラン | Pro プラン |
---|---|
利用機能 | パフォーマンステスト機能 |
ツールの利用規模 | 11名〜50名 |
ツールの利用開始時期 | 2024年6月 |
事業形態 | C to C |
アーキテクチャ
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
私の所属するチームでは以前から負荷試験を定期的に実行していて、以下のツールを利用していました。
- 負荷試験用のシナリオ記述ツール: Apache JMeter
- クラウド負荷実行 SaaS: Tricentis Flood
しかし、Tricentis Flood が 2024年6月30日に end of life (EOL) となることが発表されました。
Tricentis 社は後継として Tricentis NeoLoad というサービスをリリースしており、こちらに乗り換えることを推奨していましたが、利用開始価格が弊社の利用規模に対して高額だったため、別の移行先を探すこととなりました。
どのような状態を目指していたか
2024年7月以降は Tricentis Flood が使えなくなるため、できればそれまでに、遅くとも 7月末ごろまでには移行先のツールで負荷試験ができることを目指していました。
今回 EOL となるのはクラウド負荷実行 SaaS である Tricentis Flood のみですが、クラウドでの負荷実行は別途作成したシナリオファイルをアップロードして、それをもとに実行されることが多いです。その性質上、シナリオ記述ツール側も「クラウド負荷実行 SaaS でサポートされているもの」という制約を受けます。なのでシナリオ記述ツールについても同時に検討しました。
一方で現行のツールや運用は2019年ごろに導入されて以来見直されておらず、シナリオの記述体験が悪いなど、運用上のつらさも見えてきていたので、あわせてそれが解消できることも目的にしていました。
比較検討したサービス
負荷試験用のシナリオ記述ツール
- [採用] k6 Open Source
- Apache JMeter (移行前サービス)
クラウド負荷実行 SaaS
- [採用] Grafana Cloud k6
- Tricentis Flood (移行前サービス)
- SmartMeter
- BlazeMeter
- Tricentis NeoLoad
- Distributed Load Testing on AWS
比較した軸
- [Must] アウトバウンド IP を固定できる
- 試験対象が非公開のシステムなので IP 制限をかけたいが、クラウドサービスからの通信だけは受け付けたい
- 負荷試験シナリオの記載や管理がしやすい
- ドキュメントが豊富にある
- 結果がグラフで見やすい
選定理由
一番決め手になったのは、「負荷試験シナリオの記述が非常に体験が良いこと」でした。
JavaScript ライク(といいつつほぼ JavaScript そのもの)なコードでシナリオが記述できるため、非常に柔軟性があります。弊チームでは認証や決済などを含めた複雑なシナリオを構築していたので、こういった点は非常に重要でした。またコードであるがゆえにディレクトリ分割やモジュール化なども実現でき、アプリケーションコードのような管理ができることも魅力です。
また、クラウド負荷実行 SaaS である Grafana Cloud k6 (有料)の機能にはなりますが、GUI でのシナリオ構築も可能です。
その他、採用の要因になったポイントとしては、
- 従量課金なので利用料が予測しやすく、リーズナブルであること
- シナリオ記述ツールである k6 Open Source は別チームでの導入実績があったこと
などもありました。
導入の成果
1: シナリオ記述の体験向上
もともと利用していた Apache JMeter は GUI ベースのツールだったため、誰でもシナリオが書ける点は素晴らしいですが、モジュールの共通化やロジックの埋め込みが大変でした。
k6 Open Source に移行後は、コードでシナリオが記述できるため、自由度の高いシナリオをアプリケーションコードのように記述できています。
2: シナリオファイルの履歴管理がしやすく
Apache JMeter は xml ベースのファイルフォーマットであるため、エディタでの差分の把握が非常に困難でした。GitHub によるファイル管理はしていたものの、file changes でのレビューはほぼ機能しておらず、ローカルで Apache JMeter を起動してファイルを確認していました。
k6 Open Source に移行後は、GitHub 上でシナリオコードのレビューが完結するようになり、また履歴管理もわかりやすくなりました。
3: 負荷試験の実行が1コマンドで
Grafana Cloud k6 では負荷試験の実行を CLI コマンドで開始できます。
また、クラウド用の設定もシナリオファイルに記述することができるため、クラウドでの実行であってもローカルと同じようにコマンドを1つ叩くだけで負荷試験が実行できます。
4: トラブルシュートが容易に
k6 Open Source はドキュメントが豊富なため、不明点があっても公式ドキュメントを探せば解決策を見つけられます。
5: 意図しない使いすぎの防止
利用してから気づいた機能なのですが、Grafana Cloud k6 では利用上限が設定できます。あらかじめ設定しておいた利用上限を超えると、実行をブロックしてくれる機能です。
これにより意図せず負荷をかけすぎたり、ずっと負荷をかけっぱなしにして課金されるということがなくなりました。
導入時の苦労・悩み
シナリオの移行コスト
シナリオ記述ツールを Apache JMeter から k6 Open Source に移行したので、 jmx ファイルから k6 互換の .js ファイルへシナリオを書き直すことになりました。これを自動変換してくれるようなツールは現在のところ、有力なものはなさそうです。
Grafana Cloud アカウントの設定
Grafana Cloud k6 は Grafana Cloud の一機能なのですが、アカウントは Grafana Cloud と Grafana Cloud k6 でそれぞれあるので複雑です。権限設定もそれぞれのサービスのスコープで存在するため、初見ではやや分かりづらいかもしれません。
特にデータソースへの権限は詰まりました。設定には Grafana Cloud: Data source management が参考になります。
導入に向けた社内への説明
上長・チームへの説明
シナリオ記述ツール である k6 Open Source については料金がかからないこともあり、基本的には承認などもなく自由に使っています。
クラウド負荷実行 SaaS である Grafana Cloud k6 については有料であったため以下を説明し、承認を得ました。
- 現在利用している負荷試験ツールが EOL のため、乗り換えたいこと
- 乗り換え先の Grafana Cloud k6 での想定年間コスト
- 現在の利用トラフィックと料金体系から算出しました
活用方法
よく使う機能
1. パフォーマンステスト機能 (Testing & synthetics / Performance)
- 負荷試験のために利用しています
2. 固定 IP 機能 (Static IPs)
- Grafana Cloud k6 から負荷リクエストを実行する際、IP を固定する機能です
- IP の個数単位で料金がかかります
3. 利用上限設定機能 (Limits and quotas)
- Grafana Cloud k6 では使いすぎ防止のため、かける負荷に上限を設定することができます
- 設定できるのは同時実行数と負荷をかける時間です
- 上限を超えた場合はその時点で実行がキャンセルされ、それ以上課金されません
ツールの良い点
- シナリオの記述体験が良い
- ドキュメントが豊富
- 実行結果のメトリクスダッシュボードが見やすい
- ローカルとクラウド版で使い心地が同じ
- 従量課金でコストが割安
ツールの課題点
- ユーザーの権限設定が複雑
- クラウド版のコンソールには Grafana Cloud k6 以外のGrafana Cloud すべてのサービスが表示されており、情報が多すぎる
ツールを検討されている方へ
負荷試験を定期的に実行され、シナリオをちゃんと管理したい方には非常におすすめです。
株式会社ギフティ / tokai235
メンバー / テックリード / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
2016/04 - 2019/10 株式会社小松製作所 2019/11 - 2021/07 株式会社エックスポイントワン 2021/09 - 株式会社ギフティ
株式会社ギフティ / tokai235
メンバー / テックリード / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
2016/04 - 2019/10 株式...
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法