내가 담당하게 된 서비스 중 API-gateway의 모듈이 추가되었다.
API-Gateway에 대해서 설명이 듣던중 서킷 브레이커 패턴에 대해서 듣게 되었고, 정확하게 몰라, 정리를 하면서 공부를 하려고한다.
대부분의 모놀리틱스 환경에서의 어플리케이션이다.
특정 서비스들은 서로를 호출하면서 영향을 주는 관계에 있다.
아니면 gateway를 사용하지 않는 msa의 환경에서도 이렇게 되어있다.
어떤 환경이냐면, 특정 서비스 A에서 B를 호출한다고 가정해보자
B가 행이찼거나 slow 현상이 발생하게 되면, 이는 A의 로드타임에도 영향을 미칠수있다.
두개면 두개로 간단하게 보이지만, 연관된게 점점 더 많아진다면?
더 많은 복잡한 장애가 발생하게 된다.
이를 "장애 전파"라고 한다.
서킷 브레이커는 하나의 패턴에 가깝다.
위에서 언급한 장애전파에 대한 현상을 방지하기 위해서
서비스들 사이에 서킷 브레이커 또는 Gateway를 두는 것이다.
서비스 B가 문제가 없다면, 이 서킷 브레이커는 bypass를 시켜서 별도 핸들링하는 것이 없게 한다.
하지만,
이와 같이 Service B가 장애가 발생하거나 서비스에 문제가 발생했다고 판단되는 경우
서킷 브레이커는 Service A가 쓰레드 요청을 하고 기다리게 하지 않고, 별도 이슈발생시 Fallback message를 바로 return 하게 됨으로써 장애 전파를 막을 수 있다.
예를 들면, 상품에 대한 목록을 받아오는 Service B 를 Service A가 받아온다고 가정한다면
서킷 브레이커 쪽에서는 별도 이슈 발생시에 전달하는 상품목록을 그냥 Return 하여 Service B의 장애로 인한 전파가 되는 것을 막을 수도 있다.
오픈 소스나 공부할 Topic은
Hystrix,Spring circuit breaker,envoy.io 등이 있다.
다음 글에서 하나씩 구현해보면서 공부해 보도록 하자
'Develop > [Spring cloud]' 카테고리의 다른 글
[Spring Cloud] Gateway 공부 1 (0) | 2022.08.31 |
---|---|
[MSA] Spring Cloud Gateway (0) | 2022.08.14 |
[MSA] Service Discovery (Eureak) (0) | 2022.05.26 |
[MSA] Api Gateway 개념 & Logging Filter 적용 (0) | 2022.05.25 |
[MSA] MSA 구조? 스프링 클라우드 구조? 공부 리스트! (0) | 2022.05.24 |