API를 몇 분마다 폴링하여 도메인 상태를 확인하는 것은 낭비적이고 신뢰할 수 없습니다. Webhook 알림은 모델을 완전히 뒤집습니다. 시스템이 지속적으로 변경 사항이 있는지 묻는 대신, 모니터링 서비스는 변경 사항이 발생하는 순간 엔드포인트에 업데이트를 푸시합니다. 도메인 관리의 경우, 이는 만료 날짜가 변경되거나 WHOIS 레코드가 업데이트되거나 이전 잠금이 변경될 때 즉각적인 경고를 의미합니다. 2025년 Catchpoint 조사에 따르면, DNS 관련 중단의 73%는 만료되거나 잘못 구성된 도메인으로 추적됩니다. Webhook은 엔지니어링 팀이 사용자가 알아채기 전에 이러한 장애를 방지하기 위해 필요한 실시간 신호를 제공합니다. 이 가이드는 도메인 만료 Webhook의 작동 방식, HMAC 서명을 사용하여 보안하는 방법, 그리고 Slack, PagerDuty 또는 자신의 자동화 파이프라인에 연결하는 방법을 다룹니다.
Webhook 알림이란 무엇입니까?
웹훅은 정의된 이벤트가 발생할 때마다 서버에서 지정한 URL로 전송되는 HTTP POST 요청입니다. API를 반복적으로 쿼리하는 기존의 폴링 방식과 달리, 웹훅은 실제로 변경 사항이 발생할 때만 데이터를 전달합니다. 이러한 이벤트 기반의 접근 방식은 불필요한 네트워크 트래픽을 줄이고 중요한 상태 변경에 대해 거의 즉시 인식할 수 있게 해줍니다. 도메인 모니터링의 맥락에서 웹훅은 도메인의 만료 날짜가 변경되거나, WHOIS 데이터가 업데이트되거나, 도메인이 유예 기간 또는 복구 기간으로 진입할 때 발생합니다. 수신 엔드포인트는 페이로드를 처리하고, Slack 메시지, 데이터베이스 업데이트, 또는 자동화된 갱신 워크플로우든 어떤 조치가 필요하든 그것을 트리거합니다.
- 즉시 전달 - 이벤트와 알림 사이의 폴링 지연 없음
- API 호출 감소 - 서버가 실제 변경 사항만 처리
- 안정적인 순서 - 이벤트가 타임스탬프와 함께 순서대로 도착
- 유연한 라우팅 - 다양한 도메인 이벤트를 다양한 엔드포인트로 라우팅
- 풍부한 페이로드 - 각 알림이 전체 맥락을 포함하므로 후속 API 호출이 거의 필요 없음
모니터링할 가치가 있는 도메인 이벤트
모든 WHOIS 변경이 동일하게 중요한 것은 아닙니다. 가장 중요한 이벤트는 다가오는 만료 날짜입니다. 대부분의 레지스트라는 자체 갱신 알림을 보내지만, 이러한 이메일은 종종 스팸 폴더에 도착하거나 더 이상 아무도 확인하지 않는 주소로 갑니다. 2024년 Dynadot 분석에 따르면 우발적인 도메인 만료의 약 25%는 등록자의 연락처 이메일이 오래되었기 때문에 발생했습니다. 웹훅 알림은 팀이 실제로 모니터링하는 Slack 채널이나 인시던트 관리 플랫폼과 같은 인프라로 경고를 전달함으로써 이 문제를 완전히 해결합니다.
만료 날짜 외에도 웹훅을 통해 추적할 가치가 있는 여러 도메인 이벤트가 있습니다. 이전 잠금 상태 변경은 주목할 가치가 있습니다. clientTransferProhibited 플래그가 없으면 누군가 무단으로 이전을 시작할 수 있기 때문입니다. 네임서버 변경은 도메인 탈취 시도나 우발적인 잘못된 구성을 나타낼 수 있습니다. 레지스트라 변경은 도메인이 이전되었음을 나타내며, 경쟁사 도메인을 감시하거나 인수를 추적하는 경우 중요합니다. WHOIS 개인정보 변경은 소유권 변경을 나타낼 수 있습니다. 마지막으로 clientHold 또는 serverHold와 같은 상태 코드 변경은 도메인이 더 이상 확인되지 않음을 의미하며, 이는 모든 프로덕션 서비스에 긴급 상황입니다.
도메인 만료 웹훅 설정
웹훅 수신기를 설정하는 데는 기본 구현의 경우 약 15분이 걸립니다. POST 요청을 수락하고, JSON 페이로드를 파싱하고, 200 상태 코드를 빠르게 반환하는 HTTPS 엔드포인트가 필요합니다. 핵심 단어는 빠르게입니다. 웹훅 발신자는 일반적으로 5~30초 사이의 타임아웃을 적용합니다. 엔드포인트의 응답이 너무 오래 걸리면 발신자가 재시도할 수 있으며, 이는 중복 처리로 이어질 수 있습니다. 가장 좋은 방법은 수신을 즉시 승인하고 실제 처리를 작업 큐를 통해 비동기적으로 수행하는 것입니다. DomainExpiryCheck.com 같은 도구를 사용하면 계정 설정에서 웹훅 URL을 구성하고, 원하는 이벤트를 지정하고, 실행하기 전에 연결을 테스트할 수 있습니다.
엔드포인트는 처리하기 전에 모든 수신 요청을 검증해야 합니다. Content-Type 헤더를 확인하여 application/json인지 확인하는 것부터 시작합니다. 페이로드를 파싱하고 이벤트 유형, 도메인 이름, 타임스탬프와 같은 필수 필드가 있는지 확인합니다. 검증에 실패한 것들을 포함하여 모든 수신 웹훅을 로깅합니다. 이러한 로그는 디버깅에 필수적이기 때문입니다. 이벤트 ID를 추적하여 멱등성을 구현하면 재시도된 배달이 중복 작업을 트리거하지 않습니다. 로드 밸런서나 역 프록시 뒤에서 실행 중인 경우, 웹훅 발신자의 IP 범위가 방화벽이나 속도 제한기에 의해 차단되지 않는지 확인해야 합니다.
웹훅 보안 및 HMAC 서명
보안이 설정되지 않은 웹훅 엔드포인트는 열린 문과 같습니다. URL을 발견한 누구든지 거짓 페이로드를 보내 잘못된 경고를 트리거하거나, 더 심하게는 자동화 워크플로우를 조작할 수 있습니다. HMAC-SHA256 서명이 이 문제를 해결합니다. 웹훅 발신자와 서버는 비밀 키를 공유합니다. 각 배달 시, 발신자는 그 비밀을 사용하여 요청 본문의 해시를 계산하고 서명을 헤더에 포함합니다. 서버는 동일한 비밀로 해시를 재계산하고 두 값을 비교합니다. 일치하면 요청은 인증된 것입니다. 일치하지 않으면 거부합니다. 이는 Stripe, GitHub, Slack이 자신의 웹훅에 사용하는 것과 동일한 메커니즘입니다. OWASP의 2024년 API 보안 보고서에 따르면, 서명되지 않은 웹훅은 프로덕션 시스템에서 악용되는 상위 10개 API 취약점에 포함됩니다.
- 항상 HMAC-SHA256 이상을 사용하며, MD5나 일반 SHA1은 사용하지 않습니다
- 타이밍 공격을 방지하기 위해 상수 시간 비교 함수를 사용하여 서명을 비교합니다
- 웹훅 비밀을 주기적으로 회전하고 양쪽에서 업데이트합니다
- 5분보다 오래된 타임스탬프가 있는 요청을 거부하여 재생 공격을 방지합니다
- HTTPS를 배타적으로 사용하며, 일반 HTTP에서 웹훅을 수락하지 않습니다
- 웹훅 비밀을 환경 변수에 저장하며, 소스 코드에는 저장하지 않습니다
- 보안 감사를 위해 거부된 요청과 해당 소스 IP를 로깅합니다
Slack 및 자동화 도구와의 통합
가장 간단한 통합은 도메인 만료 웹훅을 Slack 채널로 전달하는 것입니다. Slack의 수신 웹훅 기능은 JSON 페이로드를 수락하고 메시지로 게시하는 URL을 제공합니다. 도메인 모니터링 웹훅을 수신하고, 이를 Slack의 Block Kit 구조로 포맷하고, 전달하는 작은 미들웨어 서비스를 구축할 수 있습니다. 더 풍부한 워크플로우를 위해, Zapier, Make, n8n과 같은 도구가 웹훅을 수신하고 코드를 작성하지 않고도 수백 개의 목적지로 라우팅할 수 있습니다. 일반적인 설정은 도메인 만료 경고를 가시성을 위한 Slack과 추적을 위한 Jira나 Linear 같은 프로젝트 관리 도구 모두로 보냅니다. 코드를 선호하는 엔지니어링 팀의 경우, 클라우드 함수에서 실행되는 간단한 Node.js나 Python 서비스가 잘 작동합니다. 함수는 HMAC 서명을 검증하고, 이벤트 유형을 확인하고, 그에 따라 경고를 전달합니다. 더 고급 설정은 중요한 도메인의 경우 PagerDuty와 통합되거나 레지스트라 API를 통해 자동화된 갱신 스크립트를 트리거합니다. DomainExpiryCheck.com은 웹훅 테스트를 지원하므로, 프로덕션 경고에 의존하기 전에 샘플 페이로드를 보내 통합이 올바르게 작동하는지 확인할 수 있습니다.
지금 도메인을 모니터링하세요
도메인 만료일을 추적하고, 도메인이 만료되기 전에 알림을 받으며, 도메인을 다시 잃지 않도록 하세요. 최대 3개 도메인까지 무료입니다.
무료로 모니터링 시작하기