Learning
토픽 190 / 192·시스템 설계 및 아키텍처 패턴

Graceful Degradation (우아한 성능 저하)

Graceful Degradation (우아한 성능 저하)

시스템 장애나 과부하 상황에서 전체 서비스 중단 대신 일부 기능을 제한하거나 품질을 낮춰 핵심 기능을 유지하는 설계 원칙

목적: 서비스 연속성, 사용자 경험 유지, 장애 영향 최소화, 비즈니스 보호

특징: 부분 장애 허용, 기능 우선순위, 대체 응답, 자동/수동 전환

Graceful Degradation 전략

  • 기능 비활성화: 비핵심 기능 임시 중단 (추천, 리뷰, 광고)
  • 캐시 Fallback: DB 장애 시 캐시 데이터 제공 (Stale but available)
  • 정적 응답: 동적 컨텐츠 대신 정적 페이지 제공
  • 품질 저하: 이미지 해상도 감소, 비디오 품질 하향
  • 기본값 응답: 개인화 실패 시 기본 추천 제공
  • 읽기 전용 모드: 쓰기 장애 시 읽기만 허용

구현 패턴

  • Circuit Breaker + Fallback: 장애 감지 → 대체 로직 실행
  • Feature Flag: 기능별 on/off 제어
  • Timeout + Default: 타임아웃 시 기본값 반환
  • Bulkhead: 장애 격리, 다른 기능 보호

적용 사례

  • Netflix: 추천 서비스 장애 → 인기 영상 목록 제공
  • Amazon: 결제 장애 → 장바구니 유지, 나중에 결제
  • Twitter: 팔로워 수 표시 지연 → 캐시된 값 표시

Graceful Degradation vs Fail Fast

  • Graceful Degradation: 부분 서비스 유지, 사용자 경험 우선
  • Fail Fast: 빠른 실패, 명확한 오류, 시스템 보호

장점: 서비스 연속성, 사용자 경험, 비즈니스 보호

단점: 구현 복잡도, 품질 저하 인지, 모니터링 필요

적용사례: 대규모 웹 서비스, 이커머스, 스트리밍, 금융

기술요소: Circuit Breaker, Feature Flag, Fallback, Timeout, Bulkhead

비교: Graceful Degradation(부분 유지) vs Fail Fast(빠른 실패) vs Retry(재시도)

연관: 회복 탄력성, Circuit Breaker, Feature Toggle, 고가용성, Resilience