본문 바로가기

디자인 패턴/Circuit breaker 패턴

Circuit breaker 패턴 - 1) Circuit breaker란

1) MSA(마이크로소프트 서비스 아키텍처) 패턴의 한계

  • MSA패턴은 시스템을 여러 서비스 컴포넌트로 나누고 각 컴포넌트끼리 서로 호출을 하는 패턴이다.
  • 아래의 그림 1이 MSA패턴의 모습이다.

그림1) MSA 패턴 예시

  • 이 패턴의 한계는 서버가 서로 종속적이라는 점이다.
  • 즉, server A가 server B을 호출을 했을 때 server B가 응답을 못하거나 응답 시간이 길어진다면 server A는 응답을 계속 기다리게 되는 한계가 있다.
  • 이러한 한계를 극복한 것이 Circuit breaker 패턴이다.

 

2) Circuit breaker 패턴이란

  • Circuit breaker 패턴은 그림 1에서 server A와 server B사이에 circuit breaker를 두는 것이다.
  • 아래의 그림2가 Circuit breaker 패턴의 모습이다.

 

그림2) Circuit breaker 패턴

  • server A가 server B을 호출할 때 circuit breaker가 모든 트래픽을 bypass 한다.
  • 이때 server B에 응답이 없다면 circuit breaker가 server B로의 호출을 강제로 끊고 server A에게 에러 메시지를 날린다.
  • 이를 더 발전시켜 server A에게 에러 메시지를 보내는 것이 아니라 다른 의미 있는 메시지를 보내줄 수 있다. (Fall-back 메시징)

 

 

3) Circuit breaker 패턴 사용법

  • 넷플릭스의 자바 라이브러리 - Hystrix (소프트웨어)
    • 장점 : 추가 서버 관리 비용이 들지 않는다.
    • 단점 : 코드 수정 필요, 자바 언어에 종속적
  • envoy.io 프록시 서버 (하드웨어)
    • 장점 : 코드 수정 필요 x, 언어에 종속적 x
    • 단점 : 프록시 서버를 하나 더 운영해야 하는 부담 

 

 

 

 

관련 글

Circuit Breaker 패턴 - 2) 넷플릭스의 Hystrix 라이브러리 사용하기
Circuit Breaker 패턴 - 3) spring을 이용한 Circuit breaker

 


참고 : https://bcho.tistory.com/1247