데브허브 | DEVHUB | System Design Interview: Design a Webhook Service w/ a Google EngineerSystem Design Interview: Design a Webhook Service w/ a Google Engineer
- 웹훅 서비스는 특정 이벤트 발생 시 다른 시스템에 실시간 데이터나 알림을 자동 전송하는 방법입니다. 📡
- 웹훅 서비스는 수신된 이벤트 처리, 필요한 작업 실행 및 결과 저장 등 이벤트 전체 생애 주기 관리를 담당합니다. 🔄
- 서비스는 HTTP 요청을 받아들여 이벤트를 처리하고, 데이터베이스에 저장하는 작업을 수행합니다. 📥
- 웹훅 서비스는 신뢰성과 강도 인출을 보장해야 하며, 최소 한 번 이상 처리 보장(at least once delivery)과 동일한 이벤트 처리 시 일관성을 유지하는 idempotency를 충족해야 합니다. 💪
- 메시지 큐는 이벤트를 중간에 보관하여 데이터 손실을 방지하고, 요청 핸들러와 데이터베이스의 책임을 분리하며 실패 회복, 로드 버퍼링, 확장성을 제공합니다. 📦
- 오류 처리를 위해, 요청 핸들러와 메시지 큐 장애 시, 거래 완료 전까지 최소 한 번 이상 처리될 이벤트 보장을 통해 서비스의 기능 유지가 필요합니다. ⛑️
- 중복 이벤트를 방지하기 위해, 이벤트 ID를 사용하거나, 메시지 큐의 중복 제거 기능을 활용하는 방식을 사용할 수 있습니다. 🔄
- 웹훅의 보안을 위해, 신뢰할 수 있는 서비스에서 요청이 올지 확인하는 유형 인증 또는 헤더 기반 인증을 사용하는 것이 중요합니다. 🔒