일시적인 실패에는 재시도가 도움이 될 수 있습니다. 지수 백오프는 시도 사이의 대기 시간을 늘리고, 지터는 많은 클라이언트가 같은 순간 재시도하는 일을 줄입니다.
데모에서 실패 표시 사이의 간격이 점차 넓어지고 마지막 시도는 성공합니다. 쓰기 요청은 멱등성 보장 없이 자동 재시도하면 중복 처리가 생길 수 있습니다.
언제 쓰나
일시적 5xx나 연결 실패를 다룰 때 상한·지터·중단 조건을 함께 설계합니다.
실패 직후 몰아서 다시 보내지 않고 재시도 간격을 벌려 서버에 숨 돌릴 시간을 줍니다.
<div class="n-demo"><div class="n-head"><strong>BACKOFF TIMELINE</strong><span>LIVE TRACE</span></div><div class="n-stage"><div class="back"><div class="back-track"><span id="b0">1</span><span id="b1">2</span><span id="b2">3</span><span id="b3">OK</span></div><div class="back-times mono">0s <span>+1s</span><span>+2s</span><span>+4s</span></div><div id="back-note">attempt 1 failed</div></div></div><div class="n-foot">tap to step · auto replay</div></div>.n-demo{width:min(94vw,760px);height:min(88vh,324px);padding:clamp(9px,2.2vmin,18px);border:1px solid var(--line);border-radius:13px;background:var(--surface);display:flex;flex-direction:column;gap:clamp(5px,1.3vmin,10px);font:600 clamp(12px,2.4vmin,16px)/1.3 "Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo",sans-serif;overflow:hidden}.n-head,.n-foot{display:flex;justify-content:space-between;align-items:center;color:var(--muted)}.n-head strong{color:var(--accent)}.n-head span,.n-foot{font-size:12px}.n-stage{flex:1;min-height:0;position:relative;display:flex;align-items:center;justify-content:center;gap:clamp(4px,1vmin,10px)}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.n-box{padding:clamp(5px,1.5vmin,11px);border:1px solid var(--line);border-radius:8px;background:var(--bg);text-align:center}.n-on{border-color:var(--accent)!important;color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 12%,var(--surface))!important}.n-muted{color:var(--muted)}@media(max-width:400px){.n-head span{display:none}}.back{width:96%;display:grid;gap:10px}.back-track{height:34px;border-bottom:2px solid var(--line);display:flex;align-items:center;justify-content:space-between}.back-track span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--bg);border:1px solid var(--line)}.back-track span:nth-child(2){margin-left:3%}.back-track span:nth-child(3){margin-left:13%}.back-track span:nth-child(4){margin-left:27%}.back-times{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}#back-note{text-align:center;color:var(--accent)}let step=0;function advance(){for(let i=0;i<4;i++)document.getElementById('b'+i).classList.toggle('n-on',i===step);document.getElementById('back-note').textContent=step===3?'recovered after delay':'attempt '+(step+1)+' failed';step=(step+1)%4}
const clickTarget=document.querySelector('.n-demo');if(clickTarget&&typeof advance==='function'){advance();const timer=setInterval(advance,1050);clickTarget.addEventListener('pointerdown',()=>{clearInterval(timer);advance()})}일시적인 실패에는 재시도가 도움이 될 수 있습니다. 지수 백오프는 시도 사이의 대기 시간을 늘리고, 지터는 많은 클라이언트가 같은 순간 재시도하는 일을 줄입니다.
데모에서 실패 표시 사이의 간격이 점차 넓어지고 마지막 시도는 성공합니다. 쓰기 요청은 멱등성 보장 없이 자동 재시도하면 중복 처리가 생길 수 있습니다.
일시적 5xx나 연결 실패를 다룰 때 상한·지터·중단 조건을 함께 설계합니다.