CircuitBreaker란?
누전 차단기라는 뜻.
전기 회로에서 과부하가 걸리거나 단락으로 인한 피해를 막기 위해 자동으로 회로를 정지시키는 장치.

서버에서 사용하는 서킷브레이커도 마찬가지로, 외부 API통신에서 장애가 발생했을때 발생한 장애를 탐지해서 요청을 보내지 않도록 차단시키는역할.
필요한이유
외부API호출, 특히 MSA구조에서 다른서비스를 호출하는 경우가 많은데, 호출한 서비스에 장애가 발생했을때, 다른 서비스들까지 문제가 발생 할 수도 있다. 그리고 장애가 발생한서버에 계속 요청을 보낸다면 장애 복구또한 힘들수있다.
그래서 장애를 탐지하고 자동으로 차단시켜주는 서킷브레이커가 필요하다.
동작원리
전기 회로와 같이, 건전지는 클라이언트(다른서버로 데이터를 호출하는 서버), 전구는 외부API를 나타낸다.
서킷브레이커는 3가지 상태를 가진다.
- closed : 서킷이 닫힌상태로, 외부호출이 정상작동하는것을 말한다.
- open : 서킷이 열린 상태로, 오류가 발생했을때 서킷이 Open상태가 된다.
- half-open : open상태가 되고 일정 시간이 지난후 open상태는 half-open상태가 된다.
호출이 정상적이라면 closed가되고 오류가나면 다시 open상태로 변한다.
- Closed상태(모든 외부API가 정상 작동중)
- 외부서버에 오류가 발생해 요청이 실패하면 open상태가 된다.
- open상태가 되면 모든 요청이 외부서버로 전달되지 않고 실패응답을 반환한다.
- 외부서버 정상복구
- 서킷브레이커 상태가 open인상태로 일정 시간이 지나 half-open상태가 되면 외부서버와의 통신을 테스트한다.
- 통신이 정상작동하면 서킷이 closed되고, 오류가 발생하면 다시 open상태가 된다.
- 4~6단계 반복
출처 : https://mangkyu.tistory.com/261