第18章: 負荷テスト

測定できないものは管理できず、検証していない測定は信頼できません。負荷テストは、システムにさまざまな条件下でのパフォーマンス特性を測定するために、制御された人工的なトラフィックを負荷させます。以下のような疑問に答えます:このシステムは毎秒何リクエスト処理できるか?レイテンシーが許容できなくなるのはどの時点か?負荷下で依存先が障害を起こした場合はどうなるか?

負荷テストにはいくつかの形態があります。ベースラインテストは通常の予想トラフィック下でのパフォーマンスを測定します。ストレステストは期待される限界を超えてシステムを押し、ブレークポイントを見つけます。ソークテストは中程度の負荷で長期間実行し、緩やかなリソースリークを検出します。スパイクテストは突然のトラフィックバーストをシミュレートし、システムのサージ吸収能力を検証します。

負荷テストにおける最も一般的な間違いは、依存関係のコンテキストではなくシステムを孤立してテストすることです。ストレージサービスのパフォーマンスはキャッシングサービスのヒット率に依存し、それはトラフィックパターンに依存し、それは負荷テストの設計に依存します。現実的な負荷テストは、現実的なデータとアクセスパターンで完全な依存チェーンを実行する必要があります。

負荷テスト結果はキャパシティモデルとSLO(サービスレベル目標)と比較して、システムが要件を満たしているかどうかを判断する必要があります。結果はまた、コード変更によるパフォーマンスの退行を以前のテスト実行と比較して検出できるようにアーカイブする必要があります。