グレースフル デグラデーションに対応した設計

Last reviewed 2024-12-30 UTC

Google Cloud Well-Architected Framework の信頼性の柱におけるこの原則では、 Google Cloud ワークロードをグレースフル フェイルオーバーするように設計するうえで役に立つ推奨事項が示されています。

この原則は、信頼性のレスポンス 重点分野に関連しています。

原則の概要

グレースフル デグラデーションは、高負荷が発生したシステムが、パフォーマンスや精度が低下する可能性はあるものの、機能を継続する設計アプローチです。グレースフル デグラデーションにより、システムの動作が最適でなくても、システムの可用性が維持され、完全な障害を防ぐことができます。負荷が管理可能なレベルに戻ると、システムは完全な機能を再開します。

たとえば、負荷が高い期間中は、Google 検索でランキングの高いウェブページの検索結果が優先されるため、精度が多少犠牲になる可能性があります。負荷が軽減されると、Google 検索は検索結果を再計算します。

推奨事項

グレースフル デグラデーションを実現するシステムを設計するには、次のサブセクションの推奨事項を検討してください。

スロットリングを実装する

レプリカが過負荷を個別に処理し、トラフィックが多いシナリオで受信リクエストをスロットリングできるようにします。このアプローチは、ゾーン間の過剰なトラフィックのシフトによって発生するカスケード障害を防ぐのに役立ちます。

Apigee などのツールを使用して、トラフィックの多い時間帯に API リクエストのレートを制御します。リクエストをスケールダウンする方法を反映するように、ポリシー ルールを構成できます。

過剰なリクエストを早期にドロップする

バックエンド コンポーネントを保護するために、フロントエンド レイヤで過剰なリクエストをドロップするようにシステムを構成します。一部のリクエストをドロップすることで、グローバル障害を防ぎ、システムをより適切に復元できます。このアプローチでは、一部のユーザーでエラーが発生する可能性があります。ただし、サーキット ブレーキングのように、過負荷時にすべてのトラフィックがドロップされるアプローチとは異なり、停止の影響を最小限に抑えることができます。

部分的なエラーと再試行を処理する

部分的なエラーと再試行をシームレスに処理するようにアプリケーションをビルドします。この設計により、高負荷シナリオで可能な限り多くのトラフィックが処理されるようになります。

過負荷シナリオをテストする

スロットル メカニズムとリクエスト ドロップ メカニズムが効果的に機能していることを検証するには、システムで過負荷状態を定期的にシミュレートします。テストは、システムが実際のトラフィックの急増に対応できるようにするうえで役立ちます。

トラフィックの急増をモニタリングする

分析ツールとモニタリング ツールを使用して、トラフィックの急増を予測し、過負荷になる前に対応します。早期の検出と対応により、需要の高い期間でもサービスの可用性を維持できます。