1. Test Source Code
1.1 main application
@EnableCircuitBreaker
Circuit breaker 사용을 위하여 EnableCircuitBreaker Annotation 추가합니다.
@EnableHystrixDashboard
HystrixDashboard 사용을 위하여 @EnableHystrixDashboard Annotation 추가합니다.
1.2. Service
Circuit breaker 적용하기 위해서 실 서비스 메서드 위에
@HystrixCommand(fallbackMethod = “getFallback”) Annotation 정의하고,
Service 장애 시 호출한 fallback 메서드는 getFallback 메서드로 지정합니다.
앞서 정의한 Fallback은 getFallback() 메서드로 Circuit breaker 를 적용한 원래 함수와 입력/출력 인자가 동일합니다.
2. TEST Return Result 확인
2.1 정상 상태 리턴
2.2 비정상 상태 리턴 (Circuit Breaker 발생)
3. 모니터링을 통한 Circuit Breaker 동작 확인
3.1 모니터링
/actuator/hystrix.stream 통하여 메서드의 상태 현황 정보를 체크합니다.
3.2 Circuit Breaker 동작 확인
error count 와 request count 의 변화를 확인할 수 있습니다.
3.3 HystrixDashboard 로 Circuit Breaker 동작 확인
Circuit breaker가 등록된 서비스들이 모니터링 되며 실제 호출 시 정상 호출과 비정상 호출을 모니터링 할 수 있습니다.
결론
마이크로 서비스를 지향하는 서비스에서 각 서비스 간의 동기 호출로 인한 종속 관계 일 때 특정 서비스 장애 시 전체 서비스의 장애로 이어질 수 있습니다.
Circuit Breaker를 사용하여 특정 서비스 장애 시에도 동기 호출 리턴 값을 받아 서비스 간의 종속 관계와 상관없이 해당 서비스만 차단함으로써 전체 장애로 이어지는 것을 막을 수 있습니다.
MSA 마다 다르겠지만 전체 서비스로 장애를 확산 시킬 수 있는 마이크로 서비스에는 Circuit Breaker를 적용하여 장애 예방을 해보는 것도 하나의 방법이 될 수 있을 것 같습니다.
'IT KNOWLEDGE > 개발 방법론' 카테고리의 다른 글
클라우드 네이티브 애플리케이션 개발의 기본 원칙과 실제 적용 사례 (0) | 2023.08.18 |
---|---|
프론트 엔드란? (0) | 2023.08.04 |
MVC 패턴이란? (0) | 2023.07.10 |
React에서 Next.js로 (0) | 2023.05.11 |
Circuit Breaker를 이용한 MSA 장애 예방 (0) | 2022.12.02 |
댓글