본문으로 건너뛰기

Circuit Breaker

개요

Circuit Breaker 정책은 마이크로서비스 아키텍처에서 연쇄 실패를 방지하기 위해 상위 서비스의 상태를 모니터링하고 서비스가 불안정해질 때 요청을 차단하도록 설계되었습니다. 이는 시스템 안정성, 향상된 사용자 경험 및 실패로부터의 빠른 복구를 보장합니다.

회로 차단기는 three states 사이를 전환합니다:

  • Closed: 요청이 정상적으로 처리됩니다.
  • Open: 요청이 높은 실패율로 인해 차단됩니다.
  • Half-Open: 서비스가 복구되었는지 확인하기 위해 제한된 수의 테스트 요청이 전송됩니다.

이 정책은 분산 시스템에서 prevent excessive retries, reduce latency, 및 ensure fault tolerance을 돕습니다.

구성 세부정보

필드 구성

회로 차단기 정책은 시스템 실패를 기반으로 요청이 차단되는 시기와 방법을 결정하는 여러 configurable parameters을 제공합니다.

Field nameKeyTypeRequiredDescription
오류 측정 단위 시간 (초)window_timenumber​true​초 단위의 윈도우 크기​
오류 비율 (%)failure_percent_threshold​number​true​회로를 열기 위해 실패해야 하는 요청의 비율 (%)​
최소 요청 수*min_calls_in_windownumber​true​계산을 시작하기 위해 윈도우에 존재해야 하는 최소 호출 수​
API 타임아웃 설정 (ms)api_call_timeout_ms​number​true​요청이 타임아웃되고 실패로 간주되기 전에 대기할 시간​
열린 상태 지속 시간 (초)wait_duration_in_open_state​number​true​열린 상태에서 반 열린 상태로 자동 전환되기 전에 대기할 시간(초)​
반 열린 상태 지속 시간 (초)wait_duration_in_half_open_state​number​true​반 열린 상태에서 닫힌 상태로 자동 전환되기 전에 대기할 시간(초)​
반 열린 상태에서의 최소 요청 수*half_open_min_calls_in_window​number​true​반 열린 상태에서 계산을 시작하기 위해 존재해야 하는 최소 호출 수​
반 열린 상태에서의 최대 요청 수*half_open_max_calls_in_window​number​true​반 열린 상태에서 허용되는 최대 호출 수​
응답 오류 코드 설정*error_status_code​number​false​오류 발생 시 응답 상태 코드를 재정의합니다 (회로 차단기가 요청을 차단함)​
응답 오류 메시지 설정*error_msg_override​string​false​오류 발생 시 사용자 정의 메시지로 재정의합니다​
응답 헤더 설정*response_header_override​string​false​오류 발생 시 "Content-Type" 응답 헤더를 재정의합니다​
예외 경로 설정*excluded_apis​string​true​이러한 API에서 회로 차단기를 실행하지 않도록 방지하는 문자열화된 JSON​.
각 경로의 플러스 또는 마이너스 버튼을 클릭하여 추가 경로를 추가하거나 삭제할 수 있습니다.
활성 대체 경로fallback pathstringfalse기본 서비스가 사용할 수 없을 때 요청을 처리하기 위해 정의된 대체 경로입니다.

회로 차단기 동작에 대한 추가 노트

Circuit Breaker는 실패 감지 주기를 기반으로 작동하며 세 가지 상태를 전환합니다:

  1. Closed: 트래픽이 통과하고 오류 비율이 모니터링되는 정상 상태입니다.
  2. Open: 오류 비율 임계값이 초과되면 트리거되어 모든 수신 트래픽을 일시적으로 차단합니다.
  3. Half-Open: 구성된 시간 후에 제한된 트래픽이 시스템 복구를 테스트하기 위해 허용됩니다.
  4. Recovery: 테스트 트래픽이 문제 없이 통과하면 시스템이 정상(닫힘)으로 돌아갑니다.

각 설정은 이 생명 주기를 제어하는 데 기여합니다:

FieldDescription
최소 요청오류 측정을 시작하기 위한 단위 시간 내의 최소 요청 수입니다.
API 타임아웃요청이 이 임계값을 초과하면 실패로 간주됩니다.
열린 상태 지속 시간회로가 열려 있는 시간(초)입니다.
반 열린 지속 시간회로가 반 열린 상태에 있는 시간(초)입니다.
반 열린 상태에서의 최소 요청반 열린 상태에서 오류 비율을 다시 관찰하기 위해 필요한 최소 트래픽입니다.
반 열린 상태에서의 최대 요청복구를 평가하기 위한 최대 테스트 요청 수입니다.

응답 구성 옵션

  • Custom Error Code: 트래픽이 차단될 때 반환되는 오류 코드입니다.
  • Custom Error Message: 트래픽이 차단될 때 반환되는 메시지 본문입니다.
  • Custom Error Content-Type: 오류 응답의 Content-Type입니다.

예외 경로 구성

회로 차단기가 적용되지 않아야 하는 특정 경로를 정의합니다.

노트

형식: METHOD + PATH

예: GET /example/v1

대체 경로 구성

회로 차단기가 활성화되면 요청을 대체 페이지로 리디렉션할 수 있습니다:

  • 대체 경로는 차단된 요청에 대한 사용자 정의 리디렉션 경로를 정의할 수 있습니다.
  • 대체 경로가 정의되지 않은 경우 기본 경로가 사용됩니다.
  • 동일한 API에서 특정 경로로 리디렉션하려면 원하는 API 경로를 대체 경로로 지정합니다.