
서킷 브레이커와 Redis를 융합하여 장애 복구 자동화와 완벽한 관측성 확보까지 한 번에 해결한 비결
이 아티클은 외부 API의 잦은 중단으로 인한 가동성 저하를 방지하기 위해 구축된 자동 Fallback 시스템의 아키텍처와 시행착오를 보여줍니다. 서킷 브레이커 도입 효과뿐만 아니라, 예외 검증 범위의 한계로 인해 겪었던 실제 장애 사례(CI 누락)와 이를 고도화하기 위한 정교한 오류 분류 기법 및 백업 상태 관리 전략을 깊이 있게 다룹니다. 신뢰할 수 있는 외부 연동 모듈을 설계하기 위한 실용적이고 상세한 엔지니어링 여정입니다.
수많은 서드파티 API 연동의 불안정성을 제어하고자 하는 백엔드 엔지니어 및 복잡한 장애 조치 작업을 자동화하여 가동율을 극대화하려는 시스템 아키텍트에게 필독을 권장합니다.
공공데이터포털 등 외부 API의 잦은 장애가 신원확인 서비스와 연동 서비스로 전파되었습니다. 멀티 벤더 구조는 있었으나 장애 발생 시 개발자가 설정값을 수동으로 변경해야 해 업무 외 시간 대응 지연 및 관측성 부재의 문제가 발생했습니다.
서킷 브레이커 패턴을 통해 API 호출 실패를 감지하고, 장애 벤더를 자동으로 제외한 뒤 Redis 기반의 실시간 상태 정보와 우선순위에 따라 정상 벤더로 자동 Fallback하게 구현하였습니다. 관측성 확보를 위해 Health Status 웹 페이지와 타 서비스 자동화를 위한 Health API도 추가로 구축했습니다.
장애 자동 복구 도입 후 수동 대응 시 최대 165분이 걸리던 장애 전환 시간이 5분 이내로 비약적으로 단축되었으며, 실제 장애 기간 동안의 시스템 실패율이 86.1%에서 26.8%로 현저히 감소했습니다.
Trade-off
멀티 벤더가 아닌 단일 벤더 구조의 기능에는 적용할 수 없다는 한계가 있으며, 개인정보 보호 원칙으로 민감 정보를 보관할 수 없어 사용량이 저조한 백업 벤더의 최신 상태를 백그라운드에서 실시간으로 정밀하게 유지하기 어렵습니다.
외부 API 등 연동 시스템의 장애율을 추적하여 임계치를 초과하면 요청 전송을 차단하고, 미리 지정한 Fallback 경로로 제어 흐름을 우회시켜 연쇄 장애 전파를 방지하는 설계 패턴입니다.
동일 기능을 제공하는 여러 외부 업체의 연동 레이어를 구축하고, 주 벤더 장애 발생 시 실시간 헬스 체크 상태와 선호도 순위에 따라 최적의 정상 벤더로 수동 개입 없이 트래픽을 자동 라우팅하는 기술입니다.
단순 HTTP 응답 상태 코드에 의존하지 않고, 벤더의 불규칙한 에러 본문 문구를 상세 분류하여 사용자 과실에 의한 예외와 실제 인프라 장애 예외를 정밀하게 식별하는 유효성 레이어입니다.




