「グレースフルデグラデーション」とは何ですか?


11

この「優雅な劣化」という言葉についてよく耳にします。

例えば ​​、

 "An application server should gracefully degrage when it is under heavy load "

  "Graceful degradation of user interfaces.... "

この用語は私にとって抽象的なもののように見えます。それが意味するものの具体的な例はありますか?


5

回答:


10

ここではいくつかの例を示します。

  • リソース(ハンドル、ソケット、メモリ、ドライブスペース)を使い果たしてもクラッシュすることはありませんが、利用可能なリソースで提供できる限り多くのユーザーにサービスを提供し続けます。優雅さを低下させないものは、デザインエンベロープの外に取り出されると、単に動作を停止する場合があります。
  • ユーザー向けに設計したものよりも重い負荷では、設計したものよりも応答が遅くなります。要件を超えると、システムが正常に機能しなくなることなく、システムが機能しなくなることは許容される場合があります。
  • ディスクドライブの障害、CPUコアの障害、メモリの障害などのエラー状態。正常に低下するように設計されたシステムは、一部の縮小モードで動作し続ける場合があります(たとえば、故障したドライブのデータにアクセスできず、故障していないドライブのデータを配信します)。

5

「劣化」モードのアプリケーションは通常、内部または外部の問題により、限られた機能セットへのアクセスを提供します。たとえば、アプリケーションが2つの異なるデータソースに接続するとします。これらのいずれかが失敗しても、実行を継続することは可能ですが、利用できないリソースに関連するすべての視覚(またはバックエンド)機能を無効にすることができます。

具体的な例:アプリケーションには2つのデータソースがあり、1つは人を保存し、もう1つはアカウントを保存します。アカウントデータベースに障害が発生した場合でも、アプリケーションのパフォーマンスが低下している場合は、アカウントとやり取りしなくても、新しいユーザーを作成できます。

ユーザーインターフェイスに関しては、これは一般に、一部の機能が無効になっていることをユーザーに明確に示し、ユーザーが何かが利用できない理由について暗闇に取り残されないように警告メッセージを表示することを意味します。

また、フォールトトレラントシステムに関連するウィキペディアのエントリがあります


2

技術の進歩により、常にすべてのターゲットオーディエンスによってサポートされない可能性のあるアプリケーションへの変更が常に行われています。そのようなシナリオでは、利用可能な最善のものを構築することをエミュレートするグレースフルデグラデーションに遭遇しますが、アップグレードしていないか、システムがサポートしていない可能性のある人のためのフェイルセーフもあります。

主要な例の1つは、画像がブロックされているかオフになっている場合に役立つ属性<img>を持つタグaltです。これらは、画像の意味のあるコンテキストを提供します(もちろん指定する場合のみ)。

私が考えることができる別の例は、エラーまたは使用できない場合のスタイルシートであり、ブラウザはページを表示/表示するための独自の汎用バージョンを提供します。

重い負荷について述べたように、ヒットがしきい値を超えた場合に何をすべきかを注意深く計画する必要があります。特定の機能を無効にするか、重要ではないサービスを一時停止して、息抜きをします。このすべては、ユーザーが知っているように、あなたは優雅な劣化をセットアップするのに役立ちますサーバーが応答に時間がかかる場合がありますX事によりまたはXサービスは時間かそこらのために利用できないでしょう


1

これは、入力と状態が設計限界を超えても、出力は可能な限り合理的で信頼できるままであることを意味します。

100の同時接続を処理するように設計されたサーバーの場合、クラッシュしたり、101または150接続で異常な結果を返したりすることはありません。10億のレコードを処理するように設計されたデータベースである場合、10億1千万という使用不可能な状態に突然低下することはありません。


1

グラフィカルシステムがない(X11サーバーが実行されていないなど)場合、プログラムは少なくともncursesなどのCLIを提供する必要があります。

viには、端末の機能が少なすぎる場合にexのように動作するダムモードがあります。


1

Webアプリを作成する場合、サイトがJavaScriptやFlash、またはユーザーが持っていない、または無効にしている同様の手法に依存していると、優雅な劣化が発生します。

その後、いくつかの基本的な機能をHTMLのみで提供するか、少なくともサイトが期待どおりに機能しない理由を伝える必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.