본문 바로가기

개발

Exponential Backoff

간단하게 일정 시간 간격을 두고 Retry를 한다고 생각해보자. 이 경우도 일정 시간의 여유를 줬지 사실 동일하게 네트워크 부하를 줄 가능성이 크다. 그래서 일반적인 방법은 점진적으로 시간 간격이 늘어나는 Exponential Backoff 전략을 사용하는 것이다. 이 경우 지수에 비례하여 Backoff 시간을 조절한다. 예를 들어 첫번째 재시도를 위한 대기 시간은 100ms, 두번째 재시도를 위한 대기시간은 200ms, 세번째 재시도를 위한 대기시간은 400ms 처럼 2의 지수배만큼 늘어나는 방식이다.

이런 방식은 재시도 횟수가 증가할수록 Backoff 시간이 증가하므로 네트워크에 갑작스럽게 트래픽을 부담시키는 것을 피할 수 있다. 하지만 눈치빠른 사람들은 이 방법도 한계가 있다는 것을 금방 알 수 있다. 어차피 동시에 요청이 몰린다면 똑같은 시간 간격으로 모든 재시도가 동일하게 몰릴 것이기 때문이다. 따라서 조금 더 똑똑한, 교묘한 방법이 필요하다.

----------------------

결론: Retry 와 같은 로직을 구현하기 위해 Exponential Backoff 방식으로 구현하여 네트워크 부하를 줄일 수 있다.

https://jungseob86.tistory.com/12

'개발' 카테고리의 다른 글

데몬 (Daemon)  (0) 2023.09.08
Universal Links & App Links  (0) 2023.07.23
Redis 에서 "Used Memory RSS" 가 지속적으로 증가할때  (0) 2022.12.22
Android WebView Debugging  (0) 2021.07.23
Redux 사이드 이펙트 라이브러리 비교  (0) 2020.12.15