← 질문 목록
#33깊이 0

서킷 브레이커는 무엇을 막아주는가?

아키텍처 · 분산시스템기초장애 대응

답변 연습

내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요

장애나 지연이 계속되는 의존성을 반복 호출해 내 서비스의 자원까지 묶이는 일을 막는다. 서킷 브레이커가 의존성을 복구하는 것은 아니다. 실패 가능성이 높은 호출을 잠시 거절해 장애 전파를 줄인다.

  • 닫힘

    • 열림

      최소 표본을 채운 뒤 실패율이나 느린 호출 비율이 기준을 넘는다

  • 열림

    • 반열림

      대기 시간이 지나면 제한된 수의 확인 호출만 보낸다

  • 반열림

    • 닫힘 (앞의 상태로 돌아갑니다)

      확인 표본이 기준 아래면 호출을 다시 받는다

    • 열림 (앞의 상태로 돌아갑니다)

      확인 표본도 기준을 넘으면 다시 막는다

열린 동안에는 실제 의존성을 호출하지 않고 빠르게 거절한다. 덕분에 스레드와 커넥션을 오래 붙잡지 않는다. 이 거절을 사용자에게 그대로 오류로 보낼지, 캐시나 대체 응답을 줄지는 업무별로 정한다. 잘못된 대체 응답은 빠른 실패보다 위험할 수 있다.

기준은 실패율 숫자 하나가 아니다. 개수 또는 시간 기반 윈도, 판단을 시작할 최소 호출 수, 실패로 셀 예외, 느린 호출의 시간과 비율을 함께 정한다. 트래픽이 적은 구간에서 한두 번 실패했다고 열리지 않게 최소 표본이 필요하다.

반열림 호출 수도 제한한다. 장애가 끝났는지 확인한다며 대기 요청을 한꺼번에 보내면 회복 중인 의존성을 다시 무너뜨릴 수 있다. 동시 호출 수 자체를 제한하는 일은 벌크헤드의 몫이다.

재시도와 함께 쓸 때는 적용 순서에 따라 서킷이 보는 실패 횟수가 달라진다. 열린 서킷의 거절은 재시도하지 않는다. 실제 호출의 총 시도 횟수와 시간 예산을 먼저 제한하고 backoff와 jitter를 둔다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

서킷 브레이커는 무엇을 막아주는가?