강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

HAHA님의 프로필 이미지
HAHA

작성한 질문수

멀티 모듈 아키텍처로 구현하는 은행 서버 핵심 기능 [ Kotlin & Spring ]

함수형 프로그래밍을 접목한 Circuit Breaker

Circuit Breaker 질문

해결된 질문

작성

·

14

0

안녕하세요.

 

circuit breaker 코드를 봤을 때 간략하게 circuit breaker가 이런거다 라고 설명해주셨지만, 추가로 궁금한 점이 있어 질문 드립니다.

만약 인스턴스가 여러개인 상황에서는 로컬 상황만 보는게 아니라 전체 인스턴스 상황을 봐야할 것 같은데 이럴 떄는 circuit breaker를 어떻게 사용해야 하는지 궁금합니다.

 

감사합니다.

답변 2

1

Hong님의 프로필 이미지
Hong
지식공유자

안녕하세요 HAHA님 질문 주셔서 감사합니다.

말씀해주신것처럼 해당 패턴은 단일 인스턴스에서만 유효한 패턴입니다. 하지만 전체 인스턴스 상황을 가정한다면 중간에 이 값을 저장하고 관리 할 주체를 두면 좋겠죠

 

보통은 그래서 중앙화된 저장소로 Redis를 사용합니다. 싱글 스레드이기도 하기 떄문에 다중 인스턴스 상황에서 중앙 관리 주체로 사용하기에 용이한 형태가 될 것이고, 영구적으로 보관해야 할 데이터도 아니기 떄문에 캐시 데이터를 사용해도 무방하겠죠.

 

이렇게 답변 드리면 될꺼 같아요. 감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. HAHA님.

Circuit Breaker는 시스템의 안정성을 위해 중요한 디자인 패턴입니다. 그러나 인스턴스가 여러 개인 환경에서는 각각의 인스턴스가 독립적으로 Circuit Breaker를 구현하면 전체 시스템의 상태를 제대로 감지하기 어렵습니다. 이런 환경에서 Circuit Breaker의 효과적인 사용법에 대해 설명드리겠습니다.

  1. 분산 환경에서의 Circuit Breaker: 여러 인스턴스가 존재하는 상황에서는 로컬 인스턴스의 상태뿐만 아니라 전체 시스템의 상태를 고려해야 합니다. 이를 위해 중앙 집중식으로 상태를 감시할 수 있는 시스템을 구축하거나, 서비스 메쉬 같은 외부 도구를 활용할 수도 있습니다.

  2. Hystrix, Resilience4j 같은 라이브러리 사용: 이들 라이브러리는 각 인스턴스 내에 독립적으로 Circuit Breaker를 구현하되, 메트릭이나 상태를 중앙 저장소에 통합하여 관리할 수 있는 기능을 제공합니다. 이를 통해 전체 시스템의 상태를 파악하고 인스턴스 간의 장애를 효율적으로 관리할 수 있습니다.

  3. 서비스 메쉬: Istio나 Linkerd 같은 서비스 메쉬를 사용하면, 네트워크 레벨에서 Circuit Breaker 기능을 구현할 수 있습니다. 서비스 메쉬는 각 인스턴스의 상태와 트래픽을 통합 관리하며, 장애 시 자동으로 우회하는 기능을 제공합니다.

관련하여 도움이 될만한 이전 질문과 답변 링크는 다음과 같습니다:

이외에도 궁금한 점이나 더 깊이 알아보고 싶은 부분이 있으시면 이어서 질문해 주세요. 다양한 상황에서의 Circuit Breaker 적용 방법을 이해하시는데 도움이 되길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

HAHA님의 프로필 이미지
HAHA

작성한 질문수

질문하기