[신뢰성, 오류, 복구 패턴] 서킷 브레이커(Circuit Breaker) 패턴

서킷 브레이커 문제 상황

온라인 데이팅 서비스에서 이미지 서버에 심각한 문제가 발생한 상황. 1시간의 복구 시간이 필요한 상황에서 데이팅 서비스에서는 어떻게 처리해야 할까?

서킷 브레이커 고려사항

  • 이미지 서버의 지난 N번 요청 실패
    • 재시도를 사용해야 할까?
    • 재시도하지 말아야 할까?
  • 재시도 패턴 – Optimistic 접근
    • 다음 요청에는 성공할 것이다
  • 서킷 브레이커 – Pessimistic 접근
    • 다음 요청에도 실패할 것이다

서킷 브레이커

서킷 브레이커는 다른 서비스로의 요청을 래핑한다.

정상일 때는 회로가 폐쇄되어 있고 성공/실패 요청을 추적하고 있다.

서킷 브레이커 상태

서킷이 Open된 다음 결함이 복구되었다는 사실을 어떻게 알 수 있을까?

서킷 브레이커 패턴 고려사항

  • 서킷 브레이커가 Open일 때 서비스 요청을 어떻게 처리할 것인가?
    • 무시 (로깅 필요)
    • 로깅 & 재실행
  • 호출자에게 어떤 응답을 보내것인가?
    • 실패 응답 (silient)
    • 최적의 응답 (대체 이미지 등)
  • 모든 외부 서비스에 개별 서킷 브레이커
    • Half-Open 상태를 비동기 ping으로 대체/헬스체크

참고

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유