본문 바로가기
MSA/MSA관련기술

CircuitBreaker(서킷 브레이커)와 Resilience4J

by 문자메일 2022. 12. 6.

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4

 

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - 인프런 | 강의

Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지, 구성을 어떻게 하는지에 대해

www.inflearn.com

 

 

 

 

마이크로 서비스의 경우 호출을 할 다른 서버가 죽거나 어떠한 상황 때문에 통신이 안 될 수 있다.

그러면 미리 예외처리를 하지 않았다면 예외가 발생하고 클라이언트는 에러 응답을 받게 된다.

어떤 서비스의 경우는 다른 서비스 호출 값을 꼭 클라이언트에 전달 안해도 되거나 하는 경우는 서비스가 호출하는 다른 서버와 연결이 지속적으로 안 되는 경우 Circuit Breaker 기능을 적용하여 그 서버를 설정한 시간동안 호출을 안 하도록 설정이 가능하다.

 

CircuitBreaker

- 장애가 발생하는 서비스에 반복적인 호출 차단

- 특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수행하여 장애 회피

 

 

 

 

 

서킷브레이커를 적용 안 하고 강의에서 order 서비스 서버를 안 키고, order 서버를 호출하는 user 관련 API를 호출하면 아래처럼 에러가 발생함. (당연함)

{
"timestamp": "2022-12-05T22:29:27.080+00:00",
"status": 500,
"error": "Internal Server Error",
"trace": "feign.RetryableException: connect timed out executing GET http://order-service/order-service/546dee45-8fd7-49c6-b922-203a5c032350/orders\r\n\tat feign.FeignException.errorExecuting(FeignException.java:249)

댓글