2019.05.25
Chapter 5.
나쁜 상황에 대비한 스프링 클라우드와
넷플릭스 히스트릭스의 클라이언트 회복성 패턴
발견하기 어려운 시스템 장애의 특징
5.1 클라이언트 회복성 패턴이란
클라이언트의 회복성을 위한 소프트웨어 패턴은 원격 서비스가 에러를 던지거나 제대로 동작하지 못해 원격 자원의 접근이 실패할 때, 원격 자원을 호출하는 클라이언트 충돌을 막는 데 집중.
클라이언트 회복성 패턴
5.1.1 클라이언트 측 부하 분산
클라이언트가 넷플릭스 유레카 같은 서비스 디스커버리 에이전트를 이용해 서비스의 모든 인스턴스를 검색한 후 해당 서비스 인스턴스의 실제 위치를 캐싱 하는 것
5.1.2 회로 차단기
원격 자원에 대한 모든 호출을 모니터링하고, 호출이 필요한 만큼 실패하면 회로 차단기가 활성화되어 빨리 실패하게 만들며, 고장 난 원격 자원은 더 이상 호출되지 않도록 차단한다.
5.1.3 폴백 처리
원격 서비스에 대한 호출이 실패할 때 예외를 발생시키지 않고 서비스 소비자가 대체 코드 경로를 실행해 다른 방법으로 작업을 수행
5.1.4 벌크헤드
원격 자원에 대한 호출을 자원별 스레드 풀로 분리하므로 특정 원격 자원의 호출이 느려져 전체 애플리케이션이 다운될 수 있는 위험 감소
5.2 클라이언트 회복성이 중요한 이유
회로 차단 패턴의 기능
5.9 스레드 컨텍스트와 히스트릭스
격리 전략
5.9 스레드 컨텍스트와 히스트릭스
HystrixConcurrencyStrategy
히스트릭스와 스프링 클라우드는 부모 스레드의 컨텍스트를 히스트릭스 스레드 풀이 관리하는 스레드에 전달하는 메커니즘
5.9 스레드 컨텍스트와 히스트릭스
HystrixConcurrencyStrategy 동작