큐와 비동기 API · 재시도와 DLQ · 퀴즈
퀴즈: 재시도와 DLQ
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
지수 백오프만 있고 지터가 없으면 무엇이 남나?
- 백오프만으로 충분해 아무 문제 없다
- 대기 시간이 상한 없이 너무 길어진다
- 재시도가 결국 성공해 DLQ 가 필요 없어진다
- 1만 개 클라이언트가 여전히 같은 순간에 재시도한다
'독이 든 메시지(poison message)'가 만드는 문제는?
- 소비자 메모리가 조금씩 새어 나간다
- 영원히 실패하며 재시도되어 큐 전체의 진행을 막는다
- 뒤 메시지가 먼저 처리돼 순서가 깨진다
- 재시도마다 사본이 생겨 중복이 늘어난다
DLQ 에 메시지 본문만 넣으면 부족한 이유는?
- 본문만으로는 DLQ 용량이 금방 차기 때문
- 본문만으로는 원래 순서를 복원할 수 없기 때문
- '왜 여기 있는가'에 답할 수 없어 원인 파악과 재처리가 불가능하기 때문
- 본문에는 TTL 을 걸 수 없기 때문
DLQ 소비자를 만들어 자동 재처리하게 두면?
- 복구가 빨라진다
- 원인이 그대로면 무한 루프가 된다
- 메시지가 유실된다
- 순서가 보장된다
재시도 대기 시간에 상한을 두지 않으면?
- 10번째 시도에서 17분을 기다리게 되어 사실상 처리가 멈춘다
- 최대 시도 횟수가 막아 주므로 아무 일 없다
- 대기 중인 소비자가 쌓여 서버가 죽는다
- 대기가 길어져 지터 효과가 무의미해진다
재시도해서는 안 되는 오류는?
- 스키마 위반으로 인한 파싱 실패
- 연결 타임아웃
- 503 Service Unavailable
- 429 Too Many Requests