【ぐれーすふるでぐらでーしょん】

グレースフルデグラデーション とは?

最終更新:
💡 一部の機能を休ませて、重要なサービスを続ける設計

一部の障害時に機能を制限しながら、重要なサービスを許容できる状態で続けることを目指す設計手法。残す機能と止める機能を、依存関係やデータの整合性を考えて決める。

📌 このページのポイント
障害時に、残す機能を決める 通常 商品閲覧 ✓ 続ける 購入 ✓ 続ける おすすめ ✓ 続ける 縮退 商品閲覧 ✓ 続ける 購入 ✓ 続ける おすすめ × 休止 全停止 商品閲覧 × 休止 購入 × 休止 おすすめ × 休止 おすすめが故障しても、閲覧・購入を続ける例 残す機能の依存先が正常であることが条件
3つの状態を同じ機能で比較。緑は継続、赤は休止、橙は縮退状態。おすすめの障害を閲覧や購入へ波及させない設計が必要。決済の整合性が守れない場合などは、安全のため停止する判断もある。
ひよこ ひよこ
グレースフルデグラデーションってどういう意味なの?
ペンギン先生 ペンギン先生
一部が使えなくなったときに機能を縮退させ、重要なサービスを許容できる状態で続ける考え方だよ。「おすすめ表示は休むけど、商品を見る機能は続ける」というように、障害時の動きもあらかじめ設計するんだ。
ひよこ ひよこ
具体的にはどんな場面で使うの?
ペンギン先生 ペンギン先生
ECサイトでおすすめ表示のサービスが故障したとき、その欄を省いて商品閲覧や購入を続ける例があるよ。ただし、商品や決済の依存先が正常で、おすすめ表示の失敗がそちらへ波及しない設計が必要なんだ。
ひよこ ひよこ
どうやって実現するの?
ペンギン先生 ペンギン先生
障害のある依存先への呼び出しに、タイムアウトやサーキットブレーカーを使う方法があるよ。サーキットブレーカーは失敗が続く呼び出しを一時的に止める仕組み。そのとき表示を省くのか、許容できる古いデータを使うのかは、アプリ側で別に決めるんだ。
ひよこ ひよこ
サービスを細かく分ければ、それだけで実現できるの?
ペンギン先生 ペンギン先生
分けるだけでは不十分だよ。呼び出し先を待つ処理が大量にたまったり、共通のリソースを使い切ったりすると、他の機能にも障害が広がりうる。依存関係と資源の使い方を考え、縮退時の処理が実際に動くかを試す必要があるんだ。
ひよこ ひよこ
何でも続けることを優先すればいいの?
ペンギン先生 ペンギン先生
残す機能の重要性と、安全性を考えよう。決済などでデータの整合性が守れないなら、無理に続けず止める判断もあるよ。複雑な代替処理を急に動かすと別の障害を起こしかねないので、縮退時の経路は単純にして検証しておくんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「グレースフルデグラデーション」って出てきたら「使える機能を絞り、重要なサービスを続けるための設計」と思えばだいたいOK!
📖 おまけ:英語の意味
「Graceful Degradation」 = 優雅な劣化
💬 Graceful(優雅に)+ Degradation(劣化)で、パニックにならず品よく機能を落とすイメージだよ

参考資料

← 用語集にもどる