기능 플래그 + fallback 캐시 + 팀 합의 + 단계적 복구 경험으로 설명
팀 프로젝트에서 외부 의존 서비스가 느려질 때 전체가 함께 다운되는 경험을 하면서 Degraded Mode에 관심을 갖게 됐습니다. 장애 시에도 핵심 기능만 최소한으로 유지하는 설계가 전체를 내리는 것보다 훨씬 낫다는 걸 배웠습니다. 기능 플래그를 이용해서 비핵심 기능을 런타임에 끄는 구조를 만들었고, 외부 API 응답이 느려지면 해당 기능이 자동으로 차단되도록 했습니다. 외부 API 장애 상황에서는 캐시된 응답을 fallback으로 쓰는 방식으로 서비스 연속성을 유지했습니다. 운영에서는 어떤 기능을 Degraded 상태로 내릴 수 있는지 팀이 미리 합의해두는 게 장애 대응 속도를 결정한다는 걸 경험했습니다. 복구할 때도 한꺼번에 모든 기능을 올리기보다 단계적으로 트래픽을 늘리는 방식이 더 안전하다는 걸 배웠습니다.
장애를 예외가 아닌 설계 조건으로 가정하는 것이 안정적인 시스템의 출발이라고 생각합니다.