翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
GAMEOPS03-BP03 負荷テストを早期かつ頻繁に行う
負荷テストは、システム上の実際のトラフィックをシミュレートして信頼性とパフォーマンスを評価するプロセスです。
このベストプラクティスを活用しない場合のリスクレベル: 高
実装のガイダンス
負荷テストは、リソースのパフォーマンスベースラインを開発し、システムの容量を理解する上で重要な要素です。これにより、財務予測、アーキテクチャ設計、リソース割り当て、自動スケーリング設定、起動後のスケーリング前アクティビティをガイドできます。その他の利点には次が含まれます。
-
最適化インフラストラクチャ: リソースが過剰またはプロビジョニング不足である可能性があります。必要なリソースを理解することで、コストを削減し、管理するインフラストラクチャを減らすことができます。
-
スケーラビリティの準備状況: 特定のメカニズムと機能により、ユーザーはすぐにゲームに参加できます。いつどのようにスケールするかを知ることは、需要の増加を適切に満たすこととプレイヤーを失うことの違いになる可能性があります。負荷テスト結果を使用して、さまざまなスケーリングレベルでシステムしきい値、アラートポイント、重要なアラートポイントを含むランブックを準備します。
-
高品質のコード: サービス間の過剰なクロストーク、バッチ処理されていないデータベース呼び出し、非効率的なアルゴリズム、メモリリーク、サービス低下の問題などの問題は、大規模な識別が簡単な場合があります。
-
動作の検証: さまざまな種類の障害をテストに挿入すると、システムの予想される動作を検証したり、修正が必要なエラー処理の問題を発見したりできます。
開発者は開発プロセス全体で複数の時点で負荷テストを実行するのが理想的です。それぞれがさまざまな利点をもたらす可能性があるためです。早い段階では、アーキテクチャ上の決定とリファクタリング作業を導き、変更をより安価で簡単に行うことができます。各スプリントまたはイテレーションの最後に、最新の機能を使用してアプリケーションのパフォーマンスを検証します。
本稼働環境にデプロイする前に、予想される実際の使用パターンをシミュレートした大規模な負荷テストにより、本稼働ワークロードを処理するシステムの能力が確認されます。デプロイ後、定期的な負荷テストはシステムのパフォーマンスをモニタリングし、時間の経過とともに発生する可能性のある変更やボトルネックを特定します。
プレイヤートラフィックをシミュレートするには、ゲームクライアントフローをエミュレートし、ゲームバックエンドとトランザクションして実際のプレイヤーの動作をシミュレートする軽量クライアントまたはボットが必要です。このデータは、通常、ゲームプレイログと人間主導の QA テストによって生成されたデータ、および実際のプレイヤーがゲームの早期アクセスビルドをプレイするように招待される実際の限定スケールアルファまたはベータテストによってキャプチャされます。
将来の潜在的な障害のトラブルシューティングを支援し、将来の負荷テストと比較できるパフォーマンスメトリクスを保持するために、システムの動作を運用ランブックに記録することが重要です。また、ボットが識別に失敗し、メトリクスが反映されない問題を検出する可能性があるため、ロードテスト中に人間の QA 担当者がゲームをテストすることをお勧めします。
AWS Fault Injection Service
実装手順
-
Guidance for Kubernetes-Bases ゲームロードテストを使用して、分散負荷テスト
環境を設定します。 -
提供されたデプロイファイルを使用して、EKS クラスター内で Locust コントロールポッドとワーカーポッドをカスタマイズしてデプロイし、スケーラブルで管理可能なロード生成を可能にします。
-
負荷テスト中のシステム動作とメトリクスを運用ランブックに記録して、今後のトラブルシューティングを支援し、パフォーマンスベースラインを確立します。
-
フォールトインジェクション実験を使用して、実際の中断をシミュレートし、システムのパフォーマンス、オブザーバビリティ、回復力の隠れた問題を発見します。