대규모 트래픽으로 인한 서버 과부화 해소 방법 2.

carlkim·2023년 11월 7일
0

CS학습 - 네트워크

목록 보기
43/48

서킷 브레이커

서킷 브레이커 패턴이라고도 불리며 서비스 장애를 감지하고 연쇄적으로 생기는 에러를 방지하는 기법.
서비스와 서비스 사이에 서킷브레이커 계층을 두고 미리 설정해놓은 timeout 임계값에 도달하면 서킷브레이커가 그 이후 추가 호출에 무조건 에러를 반환하게 한다.
(연쇄적인 오류 전파를 끝내는 서킷브레이커)

마이크로 서비스

도메인별로 서비스를 컴포넌트화 해서 네트워크로 묶는 것.
각각의 서비스를 하나의 서버로 만들어 놓는다.

서킷브레이커는 Error를 반환한다

기다리는 것 보다는 Error 반환이 낫다

사용자 입장에서 응답을 오래 기다려야 하는 것은 좋은 UX가 아니다.
성공인지 실패인지 중요하지 않아, 중요한 것은 사요자가 기다리지 않아야 한다는 것.

서비스를 만들 때 가장 중요한 것은 UX

서비스에 전달하지 않고 바로 Error를 반환한다.

서킷브레이커의 상태값

세 가지 상태값을 갖는다

  1. closed : 정상, 네트워크 요청의 실패율이 임계치보다 낮음
  2. open : 에러, 임계치 이상의 상태를 말한다. 요청을 서비스로 전송하지 않고 바로 오류 반환 이를 fail fast라 부른다
  3. half_open : open 상태에서 일정 timeout으로 설정된 시간이 지나면 장애가 해결되었는지 확인하기 위해 half_open 상태로 전환. 여기서 요청을 전송하여 응답을 확인, 장애가 풀리는지를 확인해서 성공하면 closed, 실패하면 다시 open으로 변경

서킷브레이커의 장점

연속적인 에러 발생을 막아주며 일부 서비스가 종료되더라도 다른 서비스들은 이상없이 동작하게 만들 수 있다, 사용자 경험을 높여준다.

서킷브레이커가 구현된 라이브러리

Hystrix, Resilience4j 가 대표적.

profile
가장 나답게 문제해결.

0개의 댓글