-
Circuit Breaker 패턴이란?TECH 2022. 3. 6. 10:35
Circuit Breaker의 필요성
서비스에서 다른 서비스를 호출하는 일은 흔히 발생한다.
그런데, 호출한 서비스에서 응답이 없을 경우 서비스 호출에 사용한 쓰레드는 응답이 올 때까지 기다려야 한다.
따라서 리소스가 낭비로 이어지고 이로 인해 시스템에 연속적인 장애 상황이 나타날 수 있다.
이러한 연속적 장애를 막기 위해 Circuit Breaker 패턴을 사용한다.
Circuit Breaker란?
Circuit Breaker의 기본 아이디어는 간단하다.
Circuit breaker 객체로 외부 호출하는 함수를 감싸고, Circuit Breaker 객체에서는 외부 호출을 모니터링하는 것이다.
실패 횟수가 특정 한계에 도달하면 Circuit Breaker가 열린다.(Circuit open)
Circuit Breaker가 열린 상태에서 이후 모든 호출은 실제 외부 호출을 하지 않고 즉시 에러를 반환한다.
상황이 정상으로 돌아왔을 때 (즉, 외부 호출이 정상적으로 가능해지면) 다시 써킷을 닫아야(Circuit close) 한다.
이 동작은 일정 시간 후 다시 외부 호출을 했을 때 정상적으로 성공하면 재설정하도록 하여 구현할 수 있다.
Circuit Breaker를 사용했을 때의 장점
Circuit Breaker를 사용함으로서 클라이언트의 타임아웃을 기다리는 것을 피할 수 있고 문제가 발생하고있는 클라이언트에 추가적인 부하를 주는 것을 피할 수 있다.
모니터링
Circuit Breaker의 모니터링은 중요하다.
Circuit Breaker의 상태 변화를 로깅을 해야 하며, 심화된 모니터링을 위해 그들의 상태를 보여줄 수 있어야 한다.
Circuit Breaker의 동작은 더 심각한 문제에 대한 경고로서 볼 수 있다.
출처
https://martinfowler.com/bliki/CircuitBreaker.html'TECH' 카테고리의 다른 글
컨테이너 대 가상머신 (1) 2023.11.23 VM이란? (0) 2023.11.23 HTTP Keep-Alive란 무엇인가 (0) 2023.11.13 데이터 중심 애플리케이션 설계 - 관계형 데이터베이스와 문서 데이터베이스 (0) 2022.07.18