이벤트 처리
Webhook 이벤트를 안전하고 안정적으로 처리하기 위한 권장 패턴을 설명합니다.
멱등 처리
현재 버전은 자동 재시도 큐를 제공하지 않지만, 운영 중 같은 이벤트가 다시 처리될 가능성에 대비해야 합니다. id 필드를 기준으로 이미 처리한 이벤트인지 확인하고, 중복이면 무시하세요.
Node.js
const processedIds = new Set<string>()
app.post("/webhooks/bank", (req, res) => {
const event = req.body
if (processedIds.has(event.id)) {
return res.status(200).json({ received: true, duplicate: true })
}
processedIds.add(event.id)
queue.enqueue(event)
res.status(200).json({ received: true })
})이벤트 순서
Webhook 도착 순서만으로 최종 상태를 판단하지 마세요. created_at이나 리소스의 최신 상태를 API로 다시 조회하여 순서에 의존하지 않는 로직을 작성하세요.
처리 절차 권장 순서
- 서명을 검증합니다 (보안 검증 문서 참고).
- 이벤트 ID로 중복 여부를 확인합니다.
- 즉시 200 응답을 반환합니다.
- 실제 비즈니스 로직은 별도 큐나 백그라운드 작업으로 처리합니다.
응답 지연 주의
Webhook 핸들러 안에서 무거운 작업(이메일 발송, 외부 API 호출 등)을 동기적으로 처리하면 기본 3초 타임아웃으로 실패 처리될 수 있습니다.