czym jest „pełna wdzięku degradacja”?


11

Dużo słyszę o tym określeniu „pełna wdzięku degradacja”.

Na przykład ,

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

  "Graceful degradation of user interfaces.... "

Termin ten wydaje mi się czymś abstrakcyjnym. Jakiś konkretny przykład tego, co to znaczy?


5
Dobry artykuł na ten temat codinghorror.com/blog/2011/04/…
JF Dion

Odpowiedzi:


10

Oto kilka przykładów:

  • Jeśli zabraknie Ci jakiegoś zasobu (uchwyty, gniazda, pamięć, miejsce na dysku), nie ulegniesz awarii, ale raczej będziesz obsługiwał tylu użytkowników, ile możesz, korzystając z dostępnych zasobów. Coś, co nie degraduje wdzięku, może po prostu przestać działać, gdy zostanie wyjęte z koperty projektowej.
  • Pod obciążeniami cięższymi niż to, co zaprojektowałeś dla użytkowników, reakcja będzie wolniejsza niż to, co zaprojektowałeś. Dopuszcza się, że bez wdzięcznej degradacji system przestanie działać po przekroczeniu wymagań.
  • Stany błędów, takie jak awaria dysku, awaria rdzenia procesora, awaria pamięci. System zaprojektowany do płynnej degradacji może kontynuować pracę w pewnym trybie zmniejszonym (np. Bez możliwości uzyskania dostępu do danych na uszkodzonym dysku, ale nadal dostarczając dane z dysku, który nie uległ awarii), podczas gdy inny po prostu ulegnie awarii.

5

Aplikacje z trybem „zdegradowanym” zazwyczaj oferują dostęp do ograniczonego zestawu funkcji z powodu problemu wewnętrznego lub zewnętrznego. Wyobraź sobie na przykład, że Twoja aplikacja łączy się z dwoma różnymi źródłami danych. Jeśli jedna z tych awarii zawiedzie, nadal może być możliwe kontynuowanie działania, ale wyłączenie wszystkich funkcji wizualnych (lub / i backendowych) związanych z niedostępnym zasobem.

Konkretny przykład: Twoja aplikacja ma dwa źródła danych, w jednym przechowujesz osoby, w drugim przechowujesz konta. Nawet jeśli baza danych kont ulegnie awarii, jeśli aplikacja działa w trybie awaryjnym, nadal można tworzyć nowe osoby, aczkolwiek nie należy wchodzić w interakcje z ich kontami.

Jeśli chodzi o interfejs użytkownika, oznacza to ogólnie, że wyraźnie wskazujesz użytkownikowi, że niektóre funkcje są wyłączone, i wyświetlasz komunikat ostrzegawczy, aby nie został pominięty w ciemności, dlaczego coś jest niedostępne.

Istnieje również wpis w Wikipedii dotyczący systemów odpornych na uszkodzenia .


2

Wraz z rozwojem technologii zawsze wprowadzamy zmiany w aplikacji, która przez cały czas może nie być obsługiwana przez wszystkich docelowych odbiorców. W takich scenariuszach napotykamy degradację Graceful, która emuluje, że budujemy dla najlepszych dostępnych, ale mamy również bezpieczny dla tych, którzy nie dokonali aktualizacji lub ich system może nie obsługiwać.

Jednym z głównych przykładów jest <img>znacznik, który ma altatrybut pomocny w przypadkach, w których obrazy są blokowane lub wyłączone, teraz dają one znaczący kontekst dla obrazów (oczywiście tylko jeśli określimy).

Kolejny przykład, jaki mogę wymyślić, to arkusze stylów w przypadku błędu lub niedostępności, przeglądarka zapewnia własną wersję ogólną do wyświetlania / wyświetlania strony.

Teraz, gdy wspomniałeś o dużym obciążeniu, musisz ostrożnie opracować plan, co należy zrobić, jeśli trafienia przekroczą próg, wyłączysz niektóre funkcje lub zawiesisz niektóre usługi, które nie są krytyczne i dadzą ci spokój. Wszystko to pomoże Ci skonfigurować płynną degradację, aby użytkownik wiedział, że x rzeczy, na które serwer może zająć trochę czasu, aby odpowiedzieć lub usługa x byłaby niedostępna przez około godzinę


1

Oznacza to, że gdy wejścia i stan przekraczają granice projektowe, wyjścia pozostają tak rozsądne i niezawodne, jak to możliwe.

Jeśli jest to serwer zaprojektowany do obsługi 100 równoczesnych połączeń, nie zawiesza się ani nie zaczyna zwracać szalonych wyników przy 101, a nawet 150 połączeniach - spowalnia lub może zrywa kilka połączeń, ale nadal działa. Jeśli jest to baza danych zaprojektowana do obsługi 1 miliarda rekordów, nie spowalnia nagle do bezużytecznego stanu na poziomie 1,01 miliarda.


1

Jeśli nie masz systemu graficznego (jak nie działa serwer X11), twój program powinien przynajmniej dostarczyć CLI, jak ncurses.

vi ma głupi tryb, w którym zachowuje się jak ex, jeśli terminal ma zbyt mało funkcji.


1

Podczas tworzenia aplikacji internetowych w grę wchodzi wdzięczna degradacja, gdy witryna korzysta z JavaScript lub Flasha lub podobnych technik, których użytkownik nie ma lub nie ma wyłączonych.

Następnie powinieneś nadal zapewniać podstawową funkcjonalność tylko w języku HTML lub przynajmniej komunikat, dlaczego strona nie działa zgodnie z oczekiwaniami.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.