다음 재시도 코드는 일시적인 503 응답이 발생하면 여러 클라이언트의 요청을 같은 시점에 몰리게 하고, 응답 유실 뒤 같은 생성 요청을 다시 보내 중복 작업도 만든다. 재시도 간격과 중복 처리 문제를 함께 줄이는 세 가지 핵심 요소를 쓰시오.
repeat up to 5 times:
response = POST /jobs
if response.status != 503: break
sleep(1000 ms) // 모든 클라이언트가 동일모범답안
실패가 이어질수록 재시도 간격을 늘리는 지수 백오프를 사용하고 무작위 지터를 더한다. 각 논리 요청에는 멱등 키를 부여해 같은 키의 재시도는 기존 처리 결과를 반환하도록 한다.
풀이와 판단 근거
지수 백오프는 연속 실패할수록 대기 시간을 늘려 장애 중인 서버의 부하를 줄인다. 지터는 여러 클라이언트가 같은 순간에 다시 요청하는 동기화를 흩어 놓는다.
백오프와 지터만으로는 응답이 유실된 상태 변경 요청의 중복 실행을 막지 못하므로, 서버가 멱등 키별 첫 결과를 저장하고 같은 키의 재요청에 재사용해야 한다.
자주 틀리는 지점
- 고정 간격으로 즉시 반복
- 지터 없이 모든 클라이언트에 같은 백오프 값만 사용
- 멱등 키 없이 요청 횟수만 제한
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.