🌳 고급 인프라
서킷 브레이커가 뭔가요?
쉽게 이해하기
집에 전기 차단기가 있는 것처럼, 한 곳에서 과부하가 걸리면 자동으로 전기를 차단해서 전체 시스템이 타버리는 걸 막는 거예요. 서버도 마찬가지로 한 서비스가 문제가 생기면 요청을 보내지 않고 차단해서 다른 서비스까지 망가지는 걸 방지해요.
핵심 정리
장애가 발생한 서비스를 자동으로 차단해서 전체 시스템을 보호하는 패턴이에요.
자세히 알아보기
서킷 브레이커(Circuit Breaker)는 마이크로서비스 아키텍처에서 장애 전파를 막는 디자인 패턴입니다. 한 서비스가 응답하지 않거나 오류를 계속 내면, 해당 서비스로의 요청을 자동으로 차단하고 대체 응답을 제공하거나 에러를 빠르게 리턴해요.
실무에서 서킷 브레이커가 중요한 이유는 연쇄 장애(Cascading Failure)를 막기 때문이에요. 예를 들어 결제 서비스가 다운되었는데 주문 서비스가 계속 결제 서비스를 호출하면, 타임아웃을 기다리느라 주문 서비스도 느려지고 결국 전체 시스템이 마비될 수 있어요. 서킷 브레이커는 이런 상황을 빠르게 감지하고 차단해서 시스템 전체를 보호합니다.
서킷 브레이커는 세 가지 상태가 있어요. Closed(정상), Open(차단), Half-Open(복구 시도). Closed 상태에서 에러가 일정 임계값을 넘으면 Open 상태로 전환되어 요청을 차단하고, 일정 시간 후 Half-Open 상태로 전환되어 일부 요청을 테스트해봅니다. 테스트가 성공하면 다시 Closed로, 실패하면 다시 Open으로 돌아가요.
실무에서는 Netflix Hystrix, Resilience4j 같은 라이브러리를 많이 사용해요. 타임아웃, 재시도, 폴백(Fallback) 전략과 함께 서킷 브레이커를 구현하면 안정적인 마이크로서비스를 만들 수 있습니다.