いきなりですが、この漢字はなにを指すか分かりますか??
『鱶』
正解は、サメ!でした!
一般的にはサメは「鮫」という漢字が当てられますが、
フカはサメの別名として古くから使われてきた名称で「大型サメを指す俗称」といわれ、
特に関西地方以南で使われるそうやで!
システム開発を進めるなかで必要となる、システム処理能力を検証する負荷テスト。開発したシステムは高度な処理を実施するなかで異常が発生した場合、適切な対応ができなければ、サービス利用者の満足度低下につながります。今回は企業が負荷テストを実行する際によく聞くお悩みについて解説していきます。
負荷テストとは
負荷テストとは、システム開発におけるテスト手法のひとつで、システムが実際の動作に耐えうる処理能力を持っているか検証するテストです。
システムに対して擬似的に大量アクセスを発生させることで、実際にシステムが公開されて大量のアクセスが発生しても問題ないか検証します。通常は何の異常もなく稼動しているシステムも、想定されていない膨大なデータが舞い込んできたり、負荷の高い処理を大量に要求されたりすると、システムは停滞し安定的なシステム稼働が出来なくなります。このような異常は通常の運用では検証できないため、負荷テストによってアクセスがどれだけ増えると処理能力が低下したり機能停止したりするかを確認します。
負荷のかけ方
負荷のかけ方は大きく分けて4種類あり、検証したい目的に合わせて負荷モデルを使い分ける必要があります。
1. ランプアップ
徐々に負荷を上げ、システム処理能力の調査を行います。耐えうる負荷の限界を確認するため約5分ごとに負荷を上げ、システムが停滞するラインを探し出します。ランプアップは、現時点でのシステム処理能力の調査、処理能力の限界点を探るために使用されます。
2.ピークホールド
一定数の負荷をかけ続けることでシステム挙動を確認します。徐々に負荷をあげ、高負荷状態のまま1時間ほど負荷をかけ続けます。高負荷状態でシステムが安定動作するか、システムの理想的な性能が維持されるかを確認します。
3.スパイク
瞬間的にシステムへアクセス負荷をかけます。一挙に集中するアクセスに対してシステムが耐えられるか、を確認します。
4.ランプダウン
高負荷状態から段階的に負荷を下げることにより、メモリの開放など処理減少に対してシステムが理想的な挙動をするか、を確認します。
なぜ負荷テストが必要なのか
負荷テストでは、システムの負荷が変わってもシステムが正しく理想的な動作をするか、テストします。負荷テストはオンラインサービス提供時に重視される「システムの品質」を保ち、お客様のサービス離脱を防ぐために重要となります。インターネットが社会的インフラとなった現在において、企業側はアクセスがどの程度発生するのか予測が難しくなっているため大規模な負荷テストへのニーズが高まっています。
また、負荷テストには以下のメリットがあります。
1 | 効率性の向上 | システムの速度低下の原因を特定、対処することでシステムの操作性や拡張性が実現可能 |
2 | 停止時間の削減 | ピーク時の負荷を把握し対処することで、システムが遅延/停止する時間を削減可能 |
3 | コストの削減 | システム停止時間の削減により、ネットワーク修復コストやサイトにアクセスできないことによる機会損失、顧客の不満が高まる可能性を削減可能 |
4 | パフォーマンスの品質測定 | システムに負荷をかけることでピーク時間の情報量を把握できるため、通常の情報量との比較によるパフォーマンス目標の策定が可能 |
5 | 容量の計画策定 | システムに求められるサービス需要を把握しシステム処理能力や数量を逆算、最適なシステム構成を把握することが可能。 |
お悩み①テスト準備にかかる業務工数やテスト実施コストが大きい
負荷テスト専用ツールを使う場合、負荷をかける端末の準備、状況設定、テストフローの作成、テスト実行や評価など、負荷テストを実施するための業務工数が非常に多くかかります。大規模な負荷テストの場合、複数の端末台数や担当者が必要になるため、工数やコストが課題となります。
また、負荷テストは短期間で実施するため、社内で多くの端末を維持・メンテナンスする事が必要です。誰でも無償で利用できる負荷テストツールもありますが、複雑なものが多く使い勝手が良くないツールが多くあります。 また、サポートが限られているため技術的なレベルでの参入障壁が高くなります。
お悩み②想定した負荷をどのようにかけるのか?
インターネット上に存在する無償利用できる負荷テストツールは、想定した規模の負荷がかからないことがあります。無償のためメーカーサポートが限られており、自社で原因追及や対処が必要になります。しかし、負荷テストに十分な知識と経験がない担当者の場合、原因究明に時間を要したり、不確かな情報を基に判断することとなり、お客様に提供するシステムの安定的運用を保証できなくなります。
お悩み③どうやって実施するのか?
負荷テストは実施目的を設定してから、結果報告の共有まで次の7つのプロセスが挙げられます。
1.実施目的の設定
負荷テストは開発したシステムの利用目的により設定する負荷が変わります。より安定したシステム運用を実行するためには負荷テストの内容が具体的であることが重要です。「どの程度の負荷に耐久できるか、数パターンを想定しておく」ために専門家の知見があれば、より具体的なシステム負荷をテストできます。
2.現状の調査
適切な調査によってアクセス負荷をどれぐらい掛けるべきか、アクセス負荷によりシステム遅延が起きた場合にどのような問題が起きるのかなどを予測します。
3.負荷テストの設計
設定したシステム負荷を実施するために、テストの進め方やタイミングを明確に設計します。負荷テストの設計内容は今後のフロー・プロセス・成功確率に影響するため検討項目に漏れがないように丁寧に設計する事が重要です。
4.負荷テストの準備
環境構築をはじめ、テストデータの準備やシステムの改修など様々な準備プロセスがあります。テスト環境の構築には、可能な限り実世界に近い状況を生み出す必要があります。特に状況設定や業務フローの作成は情報量や扱うデータによって必要な時間が大きく変わるので注意が必要です。
5.負荷テストの実施
負荷テストの準備が終わったらテストを実施します。それぞれのテストにおいて、進め方のポイントや重要な指標などが変わるため、目的や目標を明確にしましょう。
6.取得結果の分析
テストが終わったら、システム処理が停滞するタイミングの把握と原因について分析をしましょう。これらの分析結果を元にシステム処理が円滑に行われる改善方法を検討します。
7.結果報告と共有
全てのプロセスにおいて報告書を作成し、最終的なテスト結果を担当者と共有します。この結果をもとに、テスト終了なのか、また別途システムの改善や調整が必要かを議論します。
まとめ
システム品質を維持しお客様に安定したシステムを利用していただくためには負荷テストの実施が欠かせません。
負荷テストは実施工数や負荷のかけ方など専門的な知識と経験が必要です。株式会社GENZでは、システムの性能やアクセス集中時の挙動の把握から支援させていただき、お客様のシステムが安定的に運用されるように負荷テストを実施させていただきます。
負荷をかけたい箇所の特定、負荷のかけ方、計測結果の集計方法について GENZ が伴走しながらお客様と共に負荷テストを進めさせていただきます。ご不明な点やご質問がございましたら、お気軽にお問い合わせください。