View a markdown version of this page

でカオスエンジニアリングを使用してレジリエンスを高め、カスタマーエクスペリエンスを向上させる AWS - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

でカオスエンジニアリングを使用してレジリエンスを高め、カスタマーエクスペリエンスを向上させる AWS

Amazon Web Services、Federal Financials、最高技術者、Laurent Domb

2025 年 4 月 (ドキュメント履歴)

カオスエンジニアリングは、本番環境の乱れに耐えられる組織とアプリケーションの能力に対する信頼を構築するために、アプリケーションを実験する分野です。これは回復力に対する積極的なアプローチであり、アプリケーションや組織が、人、プロセス、テクノロジーに制御された障害を導入することで、サービスの障害を吸収、適応、最終的に回復できるかどうかを確認することを目的としています。また、本番稼働の停止やその他の中断を引き起こす前に、弱点を特定して排除することも目的です。

Amazon では、障害が存在するにもかかわらず機能することが通常のオペレーションモードである点まで、分散システムでは障害が避けられないことを理解しています。サービス間のやり取りは失敗する可能性があるため、さまざまな障害モード中にサービスがどのように反応するかを理解し、依存関係の障害、再試行ストーム、障害のあるアベイラビリティーゾーン、ホストリソースの枯渇などの主要な脆弱性に強いサービスを構築する必要があります。

再試行ストームの例を見てみましょう。クライアントでのローカライズされた障害は、複数のサービスに大きな影響を与える可能性があります。これは一般的にバタフライ効果と呼ばれます。再試行ストームは、バタフライ効果の兆候であり、依存関係が失敗すると、クライアントとそのクライアントのクライアントが失敗したオペレーションを再試行し、トラフィックが指数関数的に増加します。サービスは、パフォーマンスの低下を処理しながらトラフィックを再試行するだけでなく、通常のトラフィックに応答する必要があるため、過負荷になります。

カオスエンジニアリングは、分散システムの複雑さの高まりへの対応として浮上しています。これは、カオス理論、システム思考、エンジニアリングの原則を組み合わせて、予期しないイベントや動作に強い複雑なシステムを設計および管理するための学際的なアプローチです。カオスエンジニアリングの中核となるのは、不確実性と予測不可能な条件下での複雑なシステムの動作の理解と管理です。結果の予測と制御に依存する従来のエンジニアリングアプローチでは、分散システムの複雑で動的な性質に対処するには不十分であることが多いことを認識しています。これらのシステムが大きくなるにつれて、多くの場合、個々の理解範囲を超過します。

カオスエンジニアリングは、本番環境に現れる前に脆弱性を発見するために、システムに意図的に障害を挿入するための概念、手法、ツールを提供します。このプロアクティブアプローチにより、組織はストレスの多い条件下でシステムが動作するという信頼を構築できます。カオスエンジニアリングはまだ進化するプラクティスですが、複雑さと相互接続が増す中で回復力のある最新のコンピューティングシステムの設計、管理、運用への根本的な移行を表しています。

このガイドの以下のセクションでは、カオスエンジニアリングの利点について説明し、カオスエンジニアリング実験を行う方法と、組織内でカオスエンジニアリングを大規模に実装するために実行できるアプローチについて説明します。また、カオスエンジニアリング実験のテンプレートとして使用できる実験計画と実験結果のサンプルドキュメントも含まれています。

次のセクションでは、カオスエンジニアリングの特性と、単位、煙、統合テストなどの従来の耐障害性テストとの違いについて説明します。