웹훅은 어떤 이벤트가 발생했을 때, 서버가 미리 등록된 URL로 HTTP 요청(보통 POST)을 보내 상대에게 능동적으로 알려주는 '역방향 API'입니다.
클라이언트가 반복해서 물어보는 폴링과 반대로, 이벤트가 생겼을 때만 서버가 알려주므로 '전화하지 마세요, 저희가 전화할게요' 방식으로 비유됩니다.
동작은 이렇습니다. 수신 측이 공개된 엔드포인트 URL을 제공자에 등록하면, 결제 완료·배포 성공·새 메시지 같은 이벤트가 날 때 제공자가 그 URL로 이벤트 데이터를 담은 POST를 보냅니다. 폴링 대비 실시간성이 높고 불필요한 요청을 없애 효율적입니다. GitHub·Stripe·Slack 등 대부분의 SaaS가 이 방식으로 이벤트를 통지합니다.
웹훅에는 고유한 신뢰성·보안 과제가 따릅니다. (1) 인증: 수신 URL은 공개되어 있으므로, 요청이 진짜 제공자에게서 왔는지 HMAC 서명(공유 비밀로 페이로드에 서명)으로 검증해야 합니다. (2) 재시도와 멱등성: 수신 측이 다운되거나 타임아웃되면 제공자가 재시도하므로, 같은 이벤트가 여러 번 도착할 수 있습니다 — 이벤트 ID로 중복을 걸러 멱등하게 처리해야 합니다. (3) 빠른 응답: 무거운 처리는 큐에 넣고 즉시 2xx를 반환해 재시도 폭주와 rate limit을 피합니다. 서버→클라이언트 실시간 통신이라는 점에서 SSE·WebSocket과 목적이 겹치지만, 웹훅은 '서버 간(server-to-server)' 이벤트 전달에 특화됩니다.