시간나는대로 틈틈히 정리 합시다~~!!!

[마이크로서비스 디자인 패턴] 서킷 브레이커 (Circuit breaker) 본문

IT

[마이크로서비스 디자인 패턴] 서킷 브레이커 (Circuit breaker)

열심히 정리하자!! 2021. 3. 30. 00:35
반응형

1. 문제점

- 동기 방식으로 상호 통신하는 마이크로서비스 시스템 환경은 연쇄 장애가 발생할 여지가 있다.
- 하나의 마이크로서비스가 응답하지 않으면 이 마이크로서비스의 클라이언트 또한 또 다른 클라이언트의 요청에
  응답하지 않게 된다.
- 이 문제는 시스템 환경 전체에 재귀적으로 전파되어 중요한 부분까지 중단시킬 수 있다.

 

2. 참고사항

- 이런 문제는 블로킹 I/O를 사용해 동기식 요청을 실행하는 경우에 자주 발생한다.
- 다수의 동시 요청이 발생한 상황에서 서비스의 응답이 예기치 않게 지연되면 스레드 풀이 빠르게 소진돼 호출이
  지연되거나 중단된다.
- 이런 장애는 클라이언트의 클라이언트에게 연쇄적으로 전파된다.

 

3. 해결책

대상 서비스에 문제가 있다는 것을 감지해 새 요청을 보내지 않도록 차단하는 서킷 브레이크를 추가한다.
- 서비스에 문제가 감지되면 시간초과(timeout)를 무시하고 바로 실패하도록 서킷을 연다.
- 반열림 서킷(half-open circuit)이라고도 하는 장애 복구용 프로브(probe)를 사용한다.
  즉 서비스가 정상 동작하는지 확인하고자 주기적으로 요청을 보낸다.
- 프로브가 서비스의 정상 동작을 감지하면 서킷을 닫는다.
  이런 기능은 시스템 환경을 탄력적으로 만들어서 자가 치유를 가능하게 하는 매우 중요한 기능이다.

 

4. 구현된 오픈소스 도구

- 스프링클라우드 : Resilience4j
- 이스티오 : 이상감지(Outlier detection)

반응형
Comments