"우아한 퇴보"는 무엇입니까?


11

이 용어 "Graceful Degradation"에 대해 많이 들었습니다.

예를 들어

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

  "Graceful degradation of user interfaces.... "

이 용어는 나에게 추상적 인 것 같습니다. 이것이 의미하는 구체적인 예가 있습니까?


답변:


10

여기 예시들이 있습니다 :

  • 일부 리소스 (핸들, 소켓, 메모리, 드라이브 공간)가 부족한 경우 충돌하지 않고 사용 가능한 리소스를 제공 할 수있는 한 많은 사용자에게 계속 서비스를 제공합니다. 품위를 떨어 뜨리지 않는 것은 디자인 봉투 밖에서 가져갈 때 단순히 작동을 멈출 수 있습니다.
  • 사용자를 위해 설계 한 것보다 무거운 부하에서는 설계 한 것보다 느린 응답을 경험하게됩니다. 요구 사항을 초과하면 시스템이 정상적으로 작동하지 않는 성능 저하없이 수용 할 수 있습니다.
  • 디스크 드라이브 오류, CPU 코어 오류, 메모리 오류와 같은 오류 조건 정상적으로 저하되도록 설계된 시스템은 일부 축소 모드 (예 : 실패한 드라이브의 데이터에 액세스 할 수는 없지만 실패하지 않은 드라이브에서 데이터를 계속 제공하지 않고)에서 계속 작동하는 반면 다른 시스템은 단순히 충돌 할 수 있습니다.

5

"degraded"모드가있는 응용 프로그램은 일반적으로 내부 또는 외부 문제로 인해 제한된 기능 세트에 액세스 할 수 있습니다. 예를 들어, 응용 프로그램이 두 개의 다른 데이터 소스에 연결되어 있다고 가정하십시오. 이 중 하나라도 실패하면 계속 실행할 수는 있지만 사용할 수없는 리소스와 관련된 모든 시각적 (또는 백엔드) 기능을 비활성화 할 수 있습니다.

구체적인 예 : 응용 프로그램에는 두 가지 데이터 소스가 있으며 그 중 하나에는 개인을 저장하고 다른 하나는 계정을 저장합니다. 계정 데이터베이스가 실패하더라도 응용 프로그램의 성능이 저하 된 경우에도 계정과 상호 작용하지 않아도 새 사람을 만들 수 있습니다.

사용자 인터페이스와 관련하여 이는 일반적으로 사용자에게 일부 기능이 비활성화되었음을 명확하게 표시하고 어떤 메시지를 사용할 수없는 이유에 대해 어둠 속에 빠지지 않도록 경고 메시지를 표시합니다.

또한 내결함성 시스템 과 관련된 Wikipedia 항목 이 있습니다 .


2

기술 발전으로 인해 모든 대상 고객이 항상 지원하지 않는 응용 프로그램으로 변경 사항이 항상 적용됩니다. 이러한 시나리오에서 우리 는 최상의 성능 을 위해 구축하지만 업그레이드하지 않았거나 시스템이 지원하지 않는 사람들을위한 안전 장치를 갖추고 있음을 모방하는 우아한 성능 저하 를 경험합니다.

한 가지 주요 예는 이미지가 차단되거나 꺼져있는 경우에 유용한 속성 <img>을 가진 태그입니다 alt. 이제는 이미지에 대해 의미있는 컨텍스트를 제공합니다 (물론 우리가 지정한 경우에만).

내가 생각할 수있는 또 다른 예는 오류가 있거나 사용할 수없는 경우 스타일 시트이며 브라우저는 페이지를 표시 / 표시하기 위해 자체 버전을 제공합니다.

이제 부하를 언급 했으므로 적중이 임계 값을 초과하는 경우 수행 할 작업으로 계획을 신중하게 정리해야합니다. 특정 기능을 비활성화하거나 중요하지 않은 일부 서비스를 일시 중단하고 숨을 쉬게합니다. 이 모든 것은 서버가 응답하는 데 시간이 걸리 거나 x 서비스를 한 시간 정도 사용할 수없는 x 원인으로 사용자가 알도록 정상적인 성능 저하를 설정하는 데 도움이됩니다.


1

이는 입력과 상태가 설계 한계를 초과 할 때 출력이 가능한 한 합리적이고 안정적으로 유지됨을 의미합니다.

100 개의 동시 연결을 처리하도록 설계된 서버 인 경우 101 개 또는 150 개 연결에서 충돌하거나 미친 결과를 반환하지 않습니다. 연결 속도가 느려지거나 연결이 끊어 질 수 있지만 대부분 계속 작동합니다. 10 억 개의 레코드를 처리하도록 설계된 데이터베이스 인 경우 갑자기 10 억 개의 속도로 사용할 수없는 상태로 느려지지 않습니다.


1

X11 서버가 실행되지 않는 그래픽 시스템이없는 경우 프로그램은 최소한 ncurses와 같은 CLI를 제공해야합니다.

vi는 터미널이 너무 적은 기능을 가진 경우 ex처럼 동작하는 dumb 모드를 가지고 있습니다.


1

웹 응용 프로그램을 만들 때 사이트가 JavaScript 또는 Flash 또는 사용자가 없거나 사용하지 않는 유사한 기술을 사용하는 경우 성능이 저하됩니다.

그런 다음 HTML로만 일부 기본 기능을 제공하거나 최소한 사이트가 예상대로 작동하지 않는 메시지를 제공해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.