fault-tolerancetimeoutretry
circuit breaker pattern을 설명해 주세요
- 예상 시간
- 7분
30초 답변
꼬리질문
조금 더 깊게 물어본다면
답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.
retry와 circuit breaker는 왜 같이 이야기되나요?
half-open 상태는 왜 필요한가요?
fallback은 항상 좋은가요?
circuit breaker 기준은 무엇으로 잡을 수 있나요?
open 상태에서는 요청을 어떻게 처리하나요?
부가 설명
외부 API가 느려졌을 때 모든 요청이 끝까지 기다리면 thread나 connection이 묶입니다. 여기에 retry까지 붙으면 장애 중인 서비스에 요청을 더 밀어 넣는 꼴이 됩니다. circuit breaker는 이런 상황에서 “지금은 호출하지 않는 게 낫다”는 판단을 시스템에 넣는 방식입니다.
상태는 보통 closed, open, half-open으로 나뉩니다. 정상일 때는 closed, 실패가 많으면 open, 일정 시간 뒤 일부 요청으로 회복 여부를 확인하는 상태가 half-open입니다. 실제 장애 대응에서는 timeout, retry, fallback과 함께 설계합니다.
한 줄 정리
circuit breaker는 계속 실패하는 의존성을 잠시 끊어 전체 장애 전파를 막는 패턴입니다.