グレースフルデグラデーションとは、依存関係が失敗したときに、システムがコアフローを動作させ続け、エラーを返す代わりに低下したまたは部分的な体験を提供することです。目標はソフトフェイルであり、ハードフェイルではありません。低下したページは500エラーよりましです。
グレースフルデグラデーションとは、依存関係が失敗したときに、システムがコアフローを動作させ続け、エラーを返す代わりに低下したまたは部分的な体験を提供することです。目標はソフトフェイルであり、ハードフェイルではありません。低下したページは500エラーよりましです。
BAD (fail hard):
search() → backend timeout → throw → user sees HTTP 500 (whole page dead)
GOOD (fail soft):
result = search()
catch timeout → return cached_results OR empty + notice
page renders:
[ "Showing recent results — live search is temporarily unavailable." ]
+ cached listings, working nav, working checkout
→ user keeps browsing; core flow intact
デッドページの代わりに、ユーザーはキャッシュされたрезультatと小さな通知を取得し、ナビゲーションとチェックアウトは動作し続けます。障害は1つの機能に限定されます。
依存関係は失敗します — サードパーティAPI、検索クラスタ、推奨サービス。グレースフルデグラデーションがなければ、1つの障害がカスケード的に完全な障害に変わります。ソフトフェイル(キャッシュ/部分的/デフォルトデータ)を設計し、重要でないパスをフラグオフし、フォールバックでタイムアウトし、バルクヘッドで障害を分離することで、部分的な障害中もプロダクトが使用可能に保たれます。これは小さな不具合と重大なインシデントの違いです。