본문으로 건너뛰기

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 타임아웃 설정 (밀리초)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주요 서비스가 사용할 수 없을 때 요청을 처리하기 위해 정의된 대체 경로입니다.

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

The 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 PATH를 폴백 경로로 지정합니다.