웹훅 전달

Webhook Delivery

이벤트가 생기면 제공자가 수신자 URL로 요청을 보내고 실패하면 재시도합니다.

···
html
<div class="viz"><h3>EVENT EVT-42</h3><div class="row"><div class="box">provider</div><span class="arrow" id="arrow">→</span><div class="box" id="receiver">receiver</div></div><div class="muted" id="step">send event</div></div>
css
.viz{width:94%;height:88%;max-width:960px;padding:clamp(10px,2vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);font:600 clamp(12px,1.35vw,16px)/1.35 var(--font-sans,system-ui,sans-serif);display:flex;flex-direction:column;gap:clamp(7px,1.8vmin,13px);overflow:hidden}.viz h3{margin:0;color:var(--accent);font:700 clamp(12px,1.35vw,16px)/1.2 var(--font-sans,system-ui,sans-serif);letter-spacing:.04em}.viz .row{display:flex;align-items:center;justify-content:center;gap:clamp(5px,1.4vmin,12px);flex:1;min-height:0}.viz .box{padding:clamp(5px,1.5vmin,12px);border:1px solid var(--line);border-radius:9px;background:var(--bg);text-align:center}.viz .muted{color:var(--muted)}.viz .accent{color:var(--accent)}.viz .code{font-family:ui-monospace,monospace}.viz .pill{padding:3px 7px;border:1px solid var(--line);border-radius:99px;white-space:nowrap}.viz .active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--surface))}.viz .arrow{color:var(--accent);font:700 18px ui-monospace,monospace}#receiver{min-width:35%;transition:border-color .3s,background .3s}#receiver.ok{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 13%,var(--surface))}
js
const steps=[['→','verify signature','signature valid',true],['→','ACK timed out','retry scheduled',false],['→','retry same EVT-42','deduplicated · 200 ACK',true]];let i=0;function draw(){const s=steps[i];document.getElementById('arrow').textContent=s[0];document.getElementById('receiver').textContent=s[1];document.getElementById('receiver').classList.toggle('ok',s[3]);document.getElementById('step').textContent=s[2];i=(i+1)%steps.length}draw();setInterval(draw,1450)

웹훅은 소비자가 계속 조회하지 않아도 사건을 받게 하는 역방향 HTTP 호출입니다. 제공자는 이벤트 ID와 본문을 보내고 수신자의 응답으로 전달 결과를 판단합니다. 네트워크 실패나 시간 초과가 생기면 같은 이벤트가 다시 도착할 수 있습니다.

데모는 전송, 서명 확인, ACK 실패, 재전송 순서가 움직입니다. 수신자는 서명을 검증하고 이벤트 ID로 중복 처리를 막은 뒤 빠르게 응답하며, 오래 걸리는 처리는 별도 작업으로 넘기는 편이 안전합니다.

언제 쓰나

결제 완료·저장소 변경처럼 외부 서비스의 사건을 빠르게 받아야 할 때 씁니다.

페이지로 열기 ↗