graceful degradation(우아한 성능 저하)은 dependency가 실패할 때, 시스템이 오류를 반환하는 대신 축소되거나 부분적인 경험을 제공하여 핵심 흐름을 계속 동작시키는 것을 의미합니다. 목표는 hard fail이 아니라 soft fail입니다: 저하된 페이지가 500보다 낫습니다.
나쁨 (fail hard):
search() → backend timeout → throw → 사용자에게 HTTP 500 (페이지 전체 사망)
좋음 (fail soft):
result = search()
catch timeout → cached_results 반환 또는 빈 결과 + 안내
페이지 렌더링:
[ "최근 결과를 표시 중 — 실시간 검색은 일시적으로 사용할 수 없습니다." ]
+ 캐시된 목록, 동작하는 nav, 동작하는 결제
→ 사용자는 계속 둘러봄; 핵심 흐름 유지
죽은 페이지 대신 사용자는 캐시된 결과와 작은 안내를 받고, navigation과 결제는 계속 동작합니다. 실패는 하나의 기능에 국한됩니다.
dependency는 반드시 실패합니다 — 서드파티 API, 검색 클러스터, 추천 서비스. graceful degradation이 없으면 단 하나의 실패가 전면 장애로 cascade됩니다. soft fail로 설계하고(캐시/부분/기본 데이터), 비핵심 경로를 flag로 끄고, fallback과 함께 타임아웃하며, bulkhead로 실패를 격리하면 부분 실패 중에도 제품을 사용 가능하게 유지합니다 — 이것이 사소한 일시 장애와 대형 인시던트의 차이입니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기