2025.09.12 - [Server/Architecture] - 🎯 Resilience4J 라이브러리의 개념과 Circuit Breaker의 동작 과정
🎯 Resilience4J 라이브러리의 개념과 Circuit Breaker의 동작 과정
Resilience4j 란?fault tolerance (결함 허용) 라이브러리이다. 즉 오류나 장애가 발생해도 서비스가 중단되지 않게 안정적으로 도와주는 서비스이다. 이 기능을 구현하기 위한 여러 Resilience4j 모듈이 있
mingyum119.tistory.com
여기서 어떻게 라이브러리의 목적이 무엇인지 알아보고, 이 목적을 구현하기 위한 여러 모듈 중 Circuit Breaker에 대해 알아보았다.
2025.09.12 - [Framework/Spring] - Spring Cloud OpenFeign의 개념과 사용 방법 알아보기
Spring Cloud OpenFeign의 개념과 사용 방법 알아보기
팀 코드를 살펴보다가 외부 서비스와 연동하여 API를 호출하기 위해 @FeignClient 라는 어노테이션을 사용하는 것을 보았다.어떤 원리로 REST API로 서비스와 연동을 하고 있는 지 파악하기 위해 글을
mingyum119.tistory.com
이어서 Spring Cloud OpenFeign은 외부 서비스와 연동해서 HTTP API 호출을 간단하게 하기 위한 툴이라고 설명하였다.
이 두가지 라이브러리를 함께 사용하면 외부 서비스에게 HTTP API 호출을 보내는 상황에서 Circuit Breaker를 통해 장애를 탐지하고 자동으로 대응할 수 있다.
아래는 Configuration Properties 방식으로 OpenFeign과 Circuit Breaker를 설정한 예제이다.
spring:
cloud:
openfeign:
circuitbreaker:
enabled: true
alphanumeric-ids: # 이름에 영문자와 숫자만 사용 가능하도록 하는 옵션
enabled: true
resilience4j:
circuitbreaker:
instances:
DemoClientgetDemo: # circuit breaker 이름
minimumNumberOfCalls: 69
DemoClientgetDemo라는 이름의 Circuit Breaker에 대한 설정 정보를 입력하였다.
@FeignClient(name = "FeignClientName")
@CircuitBreaker(name = "DemoClientgetDemo")
interface HelloClient {
@RequestMapping(method = RequestMethod.GET, value = "/hello")
Hello getHello();
}
@CircuitBreaker 어노테이션을 클래스 레벨에 붙이면 모든 메서드에 해당 어노테이션을 적용한 것과 같은 효과를 준다.
메서드에 어노테이션을 붙이면 이전 게시글에서 말한 것처럼 모든 함수가 Circuit Breaker에 의해서 Protected function이 된다.
함수 호출의 결과가 Circuit Breaker에 수집되고 일정한 개수 이상의 실패율이나 일정한 시간 이상 지연 시 CallNotPermittedException이 발생한다.
왜 OpenFeign과 Circuit Breaker를 자주 함께 사용할까?
외부 서비스로의 HTTP 요청에 의해서 네트워크 환경이 불안정해지는 사례가 많다.
보통 요청이 실패하면 재시도처리를 하는데, 과도한 재시도 처리 등 대응이 어려워지는 경우가 많다.
그래서 실패를 감지해 장애 확산을 막아주는 장치가 필요하다. 즉 외부 API 호출로 인한 장애를 미리 감지하고 대응하기 위함이다.
참고
Spring Cloud OpenFeign
Feign is a declarative web service client. It makes writing web service clients easier. To use Feign create an interface and annotate it. It has pluggable annotation support including Feign annotations and JAX-RS annotations. Feign also supports pluggable
docs.spring.io