Patterns

Circuit breaker 패턴

Mussyan 2021. 2. 22. 15:56

api 호출 등의 통신 시 어떠한 이유에서든 오류가 나거나 통신이 지연되는 경우가 생길 수 있습니다.

오류를 적절히 처리하기 위해 timeout을 활용하고 try-catch를 활용하면 되지만 오류가 장시간, 여러번 발생하면 리소스 문제가 발생하여 장애가 확대될 수도 있습니다.

 

문제가 발생하는지 실시간으로 감시하고 해결하면 좋겠지만 결국 인력 리소스가 많이 들어가게 되므로

현실적인 대안들 중 circuit breaker 패턴을 알아보고자 합니다.

 

circuit breaker 패턴은 전기 회로차단기에서 영감을 얻은 패턴으로

전기 회로차단기의 원리는 평소에는 전기가 흐르며 작동하다가 문제 발생 시 회로를 열어 전기가 통하지 않게 하여 작동을 정지시키는 것입니다.

작동을 정지시키면 리소스 문제에 개선이 있을테고, 장애 확대 방지를 기대해 볼 수 있습니다.

 

회로차단기와 다른 점이 있다면 기능을 복구할 때 쌓여있던 request들로 인해 새로운 문제를 초래할 수 있습니다.

그래서 circuit breaker에는 half-open이라는 상태가 존재합니다.

 

(작성중)