티스토리 뷰

Circuit breaker Pattern

 

Retry Pattern (재시도 패턴)

클라이언트가 요청한 작업이 실패한 경우 다시 시도하여 성공하였을 때 결과를 반환하는 방식이다.
이러한 방식은 무한적으로 재시도를 하여 시스템 전체에 에러를 전파할 수 있기 때문에, Timeout을 통해 예외처리가 필요하다.

재시도 패턴의 문제점

재시도 패턴은 분산된 환경의 원격 리소스 요청시 요청되는 서비스가 완전히 멈춘 경우에도 여러번 재시도 하게 된다. 때문에 많은 리소스를 오랜 시간 잡고 있어 리소스 낭비가 발생할 수 있으며 이렇게 많은 지연 시간이 생기게 되면 연관된 다른 분산 서비스에도 영향이 전파될 수 있다.

 

Circuit breaker Pattern ( 회로 차단 패턴 )

회로 차단기 패턴은 실패할 가능성이 있는 작업을 호출을 막아 반복적으로 실행하지 않도록 하여 리소스 낭비를 막고 오류 해결 여부를 지속적으로 체크해 문제 해결시 호출을 다시 가능하게 하는 방법이다.

애플리케이션이 실패할 수 있는 작업을 시도하지 않도록 방지한다.

회로 차단기는 중간에서 프록시 역할을 하면서 애플리케이션 상태 모니터링 통해 실패할 가능성이 있는 애플리케이션인 경우 즉시 실패 시키거나 허용한다.

 

회로 차단기의 상태

닫힘

요청 작업을 정상적으로 라우팅하고 있는 상태이다. 실패 횟수를 내부적으로 관리하면서 임계치를 넘었을 때는 열림 상태로 변경된다.

실무에서 서비스간 통신이 닫힌 상태에서 대체 로직으로 유도하는 fallback 패턴을 같이 사용한다.

 

열림

요청작업을 즉시 실패하고 예외를 반환한다.

반열림

열림상태에서 특정 시간이 지나면 반열림 상태가 되어 일정 수의 요청만 허용한다.

이 허용된 요청들을 모니터링 하면서 열림 or 닫힘 상태로 변경을 결정한다.

회로 차단기 패턴의 장점

  • 시스템 오류를 복구하는 동안 성능에 영향을 줄인다.
  • 대기 시간을 줄여 즉시 응답 처리 할 수 있다.

 

 

회로 차단기 패턴의 동작 과정

 

 

 

참조

댓글