SpringCloud

[11번가 Spring Cloud 기반 MSA로의 전환] 4. 장애 시나리오

nineDeveloper 2021. 2. 8.
728x90

장애 시나리오


youtu.be/J-VP0WFEQsY?t=2443

 

Hystrix, Eureka, Ribbon을 사용한 우리 System은 어느정도 Resilient 한거야?


특징 API 서버 한대가 Down 된다면?

흔한 장애 Case

  • 가장 먼저 즉시 대응하는 것은 Ribbon Client

Ribbon Client에는 Retry 기능이 탑재

  • Netflix Ribbon에는 자체 구현
  • Spring Cloud에서는 Camden.SR7부터 Spring Retry기반으로 대체
<product>:
  ribbon:
    MaxAutoRetries: 0
    MaxAutoRetriesNextServer: 2
    retryableStatusCodes: 503

Spring Retry는 Optional Dependency로 직접 Dependency를 명시할 경우에만 동작

그후 일정시간 지나면..

Eureka 서버에서 해당 Instance 목록이 사라짐

  • 특정 Instance로 부터 설정된 횟수 이상의 Heartbeat 유실시 Instance가 Down된 것으로 간주

Instance 다운 후 Eureka 목록에서 사라지는 시간은 관련된 설정에 따라 다름

Hystrix는 뭐하고 있니?

3대 서버중 1대가 Down되었다면 에러 비율은 대략 33%

  • Hystrix 설정이 에러 비율 50% 였다면 Circuit은 오픈 안됨
  • 단, Timeout, Isolation, Fallback은 동작하여 적잘한 조치

Appendix 참조

728x90

댓글

💲 추천 글