LabHub

시스템 간 연동 (EAI) · 오류 처리와 재처리 설계 · 실습

지수 백오프·지터·DLQ 구현

LabHub 에서 이어서 보기

목표

지수 백오프와 지터를 갖춘 재시도를 구현하고, 재시도 금지 오류를 구분하고,
DLQ 적재와 재처리 스크립트, 재시도 정책표까지 만들 수 있게 됩니다.

왜 중요한가

재시도는 공짜가 아닙니다. 게이트웨이 4회 × 서비스A 4회 × 서비스B 4회면
사용자의 클릭 한 번이 최종 시스템에 64번의 요청이 됩니다.
회복 중이던 상대는 그 폭격에 다시 쓰러집니다.
그리고 지터 없는 지수 백오프는 1만 개 클라이언트가 정확히 같은 순간에
재시도하게 만듭니다(thundering herd). 평소에는 문제가 없기 때문에
정말 큰 장애가 났을 때 처음 발견됩니다.
재시도를 '넣었다/안 넣었다'가 아니라 설계로 다루는 것이 이 실습입니다.

단계

0. 불안정 API 를 기동합니다.
python3 /opt/lab/fixtures/eai/rest/flaky_api.py 9300 (백그라운드)

참고

단계 8개

  1. 실패 재현
  2. 고정 간격 재시도
  3. 지수 백오프
  4. 지터 추가
  5. 재시도 금지 오류 구분
  6. DLQ 적재
  7. DLQ 재처리 스크립트
  8. 재시도 정책표