← 질문 목록
#54깊이 0
서킷 브레이커는 무엇을 막아주는가?
죽은 서비스를 계속 두드리다 내 쪽까지 무너지는 것을 막는다. 응답 없는 곳에 요청을 보내면 스레드와 커넥션이 그만큼 묶인다.
닫힘
열림
실패율이 기준을 넘는다. 이제 즉시 거절한다
열림
반열림
일정 시간 뒤 몇 건만 흘려본다
반열림
닫힘 (앞의 상태로 돌아갑니다)
성공하면 원래대로
열림 (앞의 상태로 돌아갑니다)
또 실패하면 다시 막는다
빠른 실패가 내 쪽 자원을 지킨다. 30초를 기다렸다 실패하는 것보다 즉시 실패하는 편이 낫다. 그동안 자원이 안 묶이고 대체 응답을 줄 수 있다.
기준을 잡는 것이 어렵다. 너무 민감하면 잠깐 흔들린 것에도 끊기고, 둔하면 이미 무너진 뒤에 열린다.
재시도와 서킷 브레이커는 서로의 동작에 영향을 준다. 둘은 서로를 밀어낸다. 재시도가 실패를 늘려 서킷을 더 빨리 열고, 서킷이 열려 있으면 재시도는 헛돈다. 설정을 따로 잡으면 안 된다.
추천 꼬리질문
관련 질문
- 호출 시간 제한은 무엇을 기준으로 정하는가?아키텍처 · 분산시스템서킷 브레이커는 호출 시간 제한(Timeout)이 발생했을 때 장애를 감지하고 차단하는 메커니즘으로, 두 개념 모두 서비스 간 호출의 안정성을 다룬다.
- 게이트웨이를 두면 무엇을 얻고 무엇을 걱정해야 하는가?아키텍처 · 분산시스템게이트웨이에서 서킷 브레이커를 구현하여 하위 서비스의 장애가 전체 시스템으로 전파되는 것을 방지하는 패턴을 흔히 사용한다.
- 요청이 한꺼번에 몰릴 때 어떻게 막는가?인프라 · 보안
- CORS는 무엇을 막는가?인프라 · 보안
- SQL 인젝션은 무엇으로 막는가?인프라 · 보안