Notice
Recent Posts
Recent Comments
Link
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

채움의 길

[DeepDive] Circuit Breaker의 목적과 동작 방식 알아보기 본문

지식 채우기/동아리

[DeepDive] Circuit Breaker의 목적과 동작 방식 알아보기

chae-um 2026. 1. 7. 13:41
참고 자료
 

분산 서비스 환경에 대한 Circuit Breaker 적용

LINE의 엔지니어 Ono입니다. 이번 블로그에서는 LINE의 서버에서 실제로 도입을 시작한 'Circuit Breaker'라는 시스템에 대해 소개하겠습니다. Circuit Breaker란? LINE을 비롯한 최근의 Web 및 App의 백엔드 서

engineering.linecorp.com

 

내부통신에 서킷브레이커(Circuit Breaker) 적용하기 – 화해 블로그 | 기술 블로그

서비스 규모와 API 특성에 따라 장애 전파는 매우 크리티컬하게 다가올 수 있는데요. 장애 관리와 더불어 서비스 품질과 신뢰도 향상을 위해 화해 백엔드팀이 서킷브레이커를 도입했습니다.그

blog.hwahae.co.kr

 

bliki: Circuit Breaker

You use software circuit breakers on connections to remote services. These breakers trip when the supplier becomes unresponsive, once tripped the breaker no longer calls the supplier until reset.

martinfowler.com

 

Circuit Breaker

원격 접속의 성공/실패를 카운트하여 에러율이 임계치를 넘어섰을 때 자동적으로 접속을 차단하는 시스템

  • Circuit Breaker는 상태 머신(State Machine)으로 나타낼 수 있음
  • 접속 성공/실패 이벤트가 발생할 때마다 내부 상태를 업데이트하여 자동적으로 장애 검출, 복구 여부 판단
  • 외부로부터의 접속 성공/실패 여부를 따져서 흐름의 차단 여부를 결정하는 요소
    • slow call : 기준 시간보다 오래 걸린 요청
    • failure call : 실패하거나 오류를 응답받은 요청

이렇게 되면 아래와 같은 규칙을 만들 수 있다.

  • 특정 요청이 n번 연속 실패할 경우 요청을 차단한다
  • 특정 요청이 n번 연속 m초 이상 시간초과 할 경우 요청을 차단한다
  • 차단했던 요청이 n번 연속 성공할 경우 요청을 전송한다

⇒ Circuit Breaker의 목적은 외부 시스템의 장애나 지연이 우리 서비스로 전파되는 것을 차단하여, 불필요한 자원 소모와 연쇄 장애를 막고, 서비스 전체의 안정성을 유지하기 위함

 

내부 상태 종류

https://blog.hwahae.co.kr/all/tech/14541

 

  • 실제 회로 차단기에서 고안된 동작 원리이기 때문에, 닫혀 있는(CLOSED) 상태가 전류가 흐르는 상태
  • CLOSED
    • 초기 상태, 모든 접속은 평소와 같이 실행됨
  • OPEN
    • 에러율이 임계치를 넘어서면 OPEN 상태가 됨
    • 모든 접속은 차단(fail fast)
  • HALF_OPEN
    • OPEN 후 일정 시간이 지나면 HALF_OPEN 상태가 됨
    • 접속을 시도하여 성공하면 CLOSED, 실패하면 OPEN으로 되돌아감

동작 방식

https://martinfowler.com/bliki/CircuitBreaker.html

  1. 일반적으로 외부 서버는 정상 실행 중, 서킷이 닫혀있고 요청은 정상적으로 전달됨
  2. 외부 서버에 장애 발생
    1. 요청이 계속해서 실패할 경우, 회로가 Open 상태가 됨
    2. 이 후의 요청들은 더 이상 전달되지 않고 차단, 빠르게 에러 또는 실패 응답을 반환함
  3. 이 후 외부 서버가 정상적으로 복구됨
  4. 회로가 Open 상태가 된지 특정 시간이 지나고, Half Open 상태로 변경
  5. 일부 요청들이 외부 서버로 전달, 응답에 성공하면 Closed 상태가 됨
  6. 모든 요청들이 정상적으로 전달됨
  • Open 상태가 되면 특정 시간이 지나야 Half Open이 됨
  • 만약 Half Open 상태가 되었는데도 외부 서버가 복구 되지 않았다면 요청들은 실패해서 다시 Open 상태로 변경될 수도 있음

 

트리거 조건

  1. 실패율 (ex. 최근 100번 요청 중 실패율 ≥ 50% → Open)
    1. 일정 비율 이상 실패하면 차단
    2. 실패 기준은 예외가 발생하거나 5xx의 상태 코드, 커스텀 예외 등으로 설정 가능
    3. 가장 많이 사용되고 개발자가 직접 설정함
  2. 느린 호출 비율 (ex. 응답 시간이 2초 이상인 요청이 최근 요청의 40% 이상 → Open)
    1. 실패하진 않았으나, 응답이 너무 느리면 차단
    2. 타임아웃보다 한 단계 빠른 방어
  3. 연속 실패 횟수 (ex. 5번 연속 실패 → Open)
    1. 단순하고 직관적
    2. 트래픽이 적은 API에 유리함
상태 전환 기준
Closed → Open 트리거 조건 충족
Open → Half Open 대기 시간 경과 (ex. 30초 이상)
Half Open → Closed 테스트 요청 성공
Half Open → Open 테스트 요청 실패

 

Fallback

https://blog.hwahae.co.kr/all/tech/14541

 

서비스를 차단한 경우, 예외를 발생시키는 대신 대비책을 제공하거나 미리 준비된 동작을 실행하는 것

  • Circuit Breaker가 Open 상태인 상황에서 사용자 요청을 에러로 응답하지 않고, 성공으로 응답하는 것
예를 들면, 장소와 관련한 서비스일 때 사용자 맞춤 알고리즘을 통해 장소를 추천해주는 기능이 존재한다고 해봅시다.
이때, 추천 서비스에 장애가 발생하여 Circuit Breaker가 Open 상태로 전환되었다고 해봅시다.

일반적으로는 Open 상태이기 때문에 사용자 입장에서 추천 화면이 아닌 에러 화면을 보게 될 것입니다.
사용자 입장에서 이러한 에러 화면은 부정적인 경험을 초래하고 서비스를 사용하지 않을 것입니다.
이런 상황을 막기 위해 Fallback을 사용하여 추천 시스템에 장애가 발생했지만,
사용자에게는 미리 설정한 인기 장소 리스트를 응답하여 장애가 발생하지 않은 것처럼 보이게 할 수 있습니다.
https://ksh-coding.tistory.com/142#3-2.%20Fallback-1