피드로 돌아가기
Our retry loop made an outage worse. The circuit breaker stopped the cascade.
Dev.toDev.to
Backend

Circuit Breaker 도입으로 낭비 요청 1,140건에서 19건으로 98% 감소

Our retry loop made an outage worse. The circuit breaker stopped the cascade.

Mukunda Rao Katta2026년 5월 21일5intermediate

Context

Anthropic API의 일시적 성능 저하 상황에서 과도하게 설정된 Retry Budget으로 인해 요청 폭주가 발생한 사례임. API 복구 후에도 누적된 Retry 요청이 Rate Limiting을 유발하여 복구 시간을 9분 지연시킨 구조적 한계를 가짐.

Technical Solution

  • Closed, Open, HalfOpen 3단계 State Machine 기반의 Circuit Breaker 설계
  • Failure Threshold 도달 시 즉시 API 호출을 차단하는 Open 상태 전환으로 Cascade Failure 방지
  • Cooldown 기간 종료 후 단일 Probe 요청만 허용하는 HalfOpen 상태를 통한 안전한 복구 검증
  • Multi-worker 환경에서 Worker 수의 제곱근($\sqrt{n}$)에 비례하여 Threshold를 설정하는 공유 브레이커 구조 채택
  • Exponential Backoff 기반의 llm-retry와 결합하여 일시적 오류와 시스템적 장애를 분리 처리

- 공유 브레이커 사용 시 Worker 수에 따라 Threshold를 비선형적으로 조정했는가? - Retry 정책이 Circuit Breaker의 Open 상태를 Non-retryable 에러로 처리하여 즉시 종료하는가? - API Provider별로 독립적인 브레이커를 구성하여 장애 전파 범위를 격리했는가?

원문 읽기