기억하기 프로젝트
Retryable의 지수 백오프 multiplier 본문
Exponential Backoff 로 재시도 하기 위함이에요. 최초 1초 지연하고, 이후 2배씩 늘려가며 지연을 해요.
Retryable이 기본 3번 시도하니깐, 호출 실패 -> 1초 대기 -> 호출 실패 -> 2초 대기 -> 호출 실패 -> 4초 대기 -> 호출. 이렇게 넘어가겠죠.
SES의 API 호출은 1초에 1건씩 호출 할 수 있다고 해요. (Service quotas in Amazon SES)
운이 나쁘면 여러 곳에서 호출함으로 인해 실패를 할 가능성이 있어요.
그런 이유로 재시도가 필요하고 발송을 제외한 모든 호출에 대해 제한이 있으므로, 조금씩 재시도 타이밍의 차이를 두기 위함입니다.
요청량이 많아진다면 좀 더 진지하게 Jitter 를 도입해서 랜덤성을 좀 더 둬야 겠으나, 지금은 충돌이 자주 발생할 일이 아닌지라 이 정도로 충분하다고 생각됩니다.
참고:
ex. @Retryable(backoff = @Backoff(delay = 1000, multiplier = 2.0))
docs.spring.io/spring-retry/docs/api/current/org/springframework/retry/annotation/Backoff.html
docs.aws.amazon.com/ko_kr/general/latest/gr/api-retries.html
devopedia.org/binary-exponential-backoff
'개발이야기 > 서버' 카테고리의 다른 글
아파치 Http ConnectionManager 관련, keep-alive 설정 (0) | 2020.11.25 |
---|---|
로컬스택(LocalStack) 활용하여 테스트 환경 구성하기 (0) | 2020.11.25 |
[리눅스] L4스위칭 목적 및 명령어 정리 (1) | 2016.06.13 |
톰캣 Document Root 설정 (1) | 2016.06.13 |
[리눅스] 쉘 스크립트 첫 라인의 #!/bin/sh (0) | 2016.06.08 |