피드로 돌아가기
Dev.toBackend
원문 읽기
유실 없는 Webhook 구현을 위한 신뢰성 계층 설계 전략
Webhooks Are Broken by Design — So I Built a Fix
AI 요약
Context
Webhooks의 'Fire and Forget' 방식에 따른 데이터 유실 위험 존재. 수신 서버의 일시적 장애나 네트워크 불안정 시 이벤트 복구 불가. 송신 측의 재시도 전략에 의존하는 구조적 한계 발생.
Technical Solution
- 수신 즉시 200 OK 응답 후 Raw Payload를 저장하는 수신-처리 분리 설계
- FastAPI 기반의 비동기 Ingestion 레이어를 통한 고속 요청 처리
- Celery와 Redis 조합의 태스크 큐를 활용한 비동기 전달 체계 구축
- 30초부터 24시간까지 단계적으로 간격을 늘리는 Exponential Backoff 재시도 로직 적용
- PostgreSQL을 활용한 모든 이벤트의 수신 상태 및 전달 이력 저장
- 실패한 이벤트의 상태 확인 및 수동 재시도를 지원하는 모니터링 대시보드 제공
Key Takeaway
외부 시스템의 전달 보장 수준을 신뢰하지 않고 제어 가능한 중간 신뢰성 계층을 구축하여 시스템의 결정론적 동작을 확보하는 설계 원칙.
실천 포인트
외부 Webhook 연동 시 즉시 처리 대신 '수신 전용 큐'를 먼저 배치하여 데이터 유실 가능성을 차단할 것