이 문서를 통해 아래 질문들에 답할 수 있게 됩니다.

  • provider 장애가 발생하면 어떤 완화 전략이 있는가?
  • fallback model과 degrade mode는 어떻게 다르게 쓰는가?
  • circuit breaker는 AI 기능에서 어떤 역할을 하는가?

개요

AI 기능은 외부 provider에 의존할 수 있다. provider 장애, rate limit, latency 증가가 발생하면 내부 서버까지 영향을 받을 수 있다. 운영 서비스는 provider 장애를 전제로 설계해야 한다.

완화 전략

  • timeout
  • retry 제한
  • circuit breaker
  • fallback model
  • fallback provider
  • cached response
  • related documents only
  • queue 전환
  • feature flag off

이 중 어떤 것을 쓸지는 기능 중요도와 위험도에 따라 다르다.

Fallback과 Degrade

fallback은 다른 모델이나 provider로 대체하는 것이다. degrade는 기능 품질을 낮춰 계속 제공하는 것이다.

예:

  • 고급 답변 생성 실패 시 관련 문서 목록만 제공
  • 실시간 요약 실패 시 job으로 접수
  • agent 자동 실행 실패 시 실행 계획만 생성
  • 고성능 모델 장애 시 작은 모델로 초안 생성

코드로 이해하기

public AiAnswer answerWithFallback(User user, String question) {
    try {
        return primaryAiService.answer(user, question);
    } catch (LlmUnavailableException ex) {
        log.warn("primary llm unavailable, degrading to source list", ex);
        return relatedDocumentService.findRelatedOnly(user, question);
    }
}

degrade response는 제품팀과 미리 문구를 정해야 한다.

Circuit Breaker

provider 실패율이 높을 때 계속 호출하면 서버 thread와 비용을 낭비한다. circuit breaker는 일정 시간 빠르게 실패하거나 fallback으로 보낸다.

장애 상황과 대응

provider 5xx 증가:

  • circuit breaker 열림 확인
  • fallback route 정상 여부 확인
  • provider status 확인
  • retry storm 여부 확인

rate limit:

  • tenant별 사용량 확인
  • batch/eval 중단
  • queue 처리량 제한
  • 사용자 메시지 조정

인프라 협업 포인트

인프라팀과 provider별 health check, outbound timeout, circuit breaker threshold, fallback 트래픽 비용, feature flag 경로를 합의한다.

실전 팁

  • fallback은 평소에 테스트한다.
  • fallback model도 schema eval을 돌린다.
  • degrade UX는 장애 때 즉석에서 만들지 않는다.
  • provider 장애 알림을 application metric과 연결한다.

위험 신호!

  • provider 장애가 전체 API timeout으로 번진다.
  • fallback을 한 번도 테스트하지 않았다.
  • circuit breaker 없이 retry만 한다.
  • degrade response가 없다.

확인 질문

확인 질문

  • fallback과 degrade mode의 차이는 무엇인가?
    • fallback은 대체 모델이나 provider로 처리하는 것이고, degrade는 기능 수준을 낮춰 제공하는 것이다.
  • circuit breaker가 필요한 이유는 무엇인가?
    • provider 장애 시 내부 리소스 고갈과 retry storm을 막기 위해서다.

Spring AI 적용 연결

참고 문서