Day 83 · 1/5
🌳 고급 고급

서킷 브레이커 패턴

쉽게 이해하기

마치 집에 있는 누전차단기와 비슷해요. 전기 과부하가 걸리면 자동으로 전원을 차단해서 더 큰 화재를 막잖아요. 서킷 브레이커도 문제가 생긴 서비스로 계속 요청을 보내면 시스템 전체가 마비될 수 있으니, 자동으로 요청을 멈춰서 피해를 최소화하는 거예요.

핵심 정리

장애가 발생한 서비스로의 요청을 자동으로 차단해서 시스템 전체가 멈추는 걸 막아주는 안전장치예요.

자세히 알아보기

마이크로서비스 아키텍처에서는 여러 서비스가 서로 통신하면서 작동해요. 만약 한 서비스에 장애가 생겼는데 다른 서비스들이 계속 요청을 보내면 어떻게 될까요? 응답을 기다리다가 타임아웃이 나고, 그 동안 리소스는 점점 소진되면서 결국 시스템 전체가 느려지거나 멈추게 돼요. 서킷 브레이커 패턴은 이런 상황을 방지하기 위해 3가지 상태를 가지고 있어요. Closed 상태에서는 정상적으로 요청이 흘러가고, 에러가 임계값을 넘으면 Open 상태로 전환돼서 모든 요청을 즉시 차단해요. 일정 시간 후 Half-Open 상태가 되면 일부 요청만 보내서 서비스가 회복됐는지 확인하죠. 예를 들어 결제 서비스가 다운됐다면, 서킷 브레이커가 즉시 '결제 불가' 상태로 전환해서 사용자에게 빠른 에러 메시지를 보여줘요. 무작정 기다리다가 타임아웃 나는 것보다 훨씬 나은 사용자 경험이죠. Netflix의 Hystrix나 Resilience4j 같은 라이브러리가 이 패턴을 구현해 놨어요. 실무에서는 외부 API 호출이나 데이터베이스 연결처럼 실패할 가능성이 있는 모든 네트워크 통신에 서킷 브레이커를 적용해요. 임계값 설정, fallback 로직 준비, 모니터링 대시보드 구성까지 함께 고려해야 진짜 효과를 볼 수 있어요.