Patterns
Circuit breaker 패턴
Mussyan
2021. 2. 22. 15:56
api 호출 등의 통신 시 어떠한 이유에서든 오류가 나거나 통신이 지연되는 경우가 생길 수 있습니다.
오류를 적절히 처리하기 위해 timeout을 활용하고 try-catch를 활용하면 되지만 오류가 장시간, 여러번 발생하면 리소스 문제가 발생하여 장애가 확대될 수도 있습니다.
문제가 발생하는지 실시간으로 감시하고 해결하면 좋겠지만 결국 인력 리소스가 많이 들어가게 되므로
현실적인 대안들 중 circuit breaker 패턴을 알아보고자 합니다.
circuit breaker 패턴은 전기 회로차단기에서 영감을 얻은 패턴으로
전기 회로차단기의 원리는 평소에는 전기가 흐르며 작동하다가 문제 발생 시 회로를 열어 전기가 통하지 않게 하여 작동을 정지시키는 것입니다.
작동을 정지시키면 리소스 문제에 개선이 있을테고, 장애 확대 방지를 기대해 볼 수 있습니다.
회로차단기와 다른 점이 있다면 기능을 복구할 때 쌓여있던 request들로 인해 새로운 문제를 초래할 수 있습니다.
그래서 circuit breaker에는 half-open이라는 상태가 존재합니다.
(작성중)