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