웹훅(Webhook)이란? (Feat. API)

BM1201·2024년 9월 19일
1
post-thumbnail

Webhook이란?

Webhook은 서버 간에 자동으로 실시간 데이터를 전달할 수 있게 해주는 웹 기술입니다. 주로 이벤트 기반으로 작동하며, 특정 이벤트가 발생할 때 서버가 미리 정의된 URL로 데이터를 전송하는 방식입니다. API와 유사하지만, 차이점은 API가 클라이언트가 요청을 해야 데이터를 가져오는 요청-응답 방식이라면, Webhook은 이벤트가 발생할 때 자동으로 데이터를 푸시합니다.

Webhook의 주요 특징

1. 이벤트 기반

Webhook은 서버에서 발생하는 특정 이벤트(예: 파일이 업로드되었을 때, 결제가 완료되었을 때 등)를 감지하고 미리 지정된 엔드포인트로 데이터를 전송합니다. 예를 들어, GitHub에서 Pull Request가 발생하면 설정된 Webhook URL로 해당 이벤트와 관련자동으로 전달됩니다.

2. 실시간 데이터 전송

요청 없이 서버가 클라이언트에게 실시간으로 데이터를 전송하는 방식으로, 실시간 알림이나 업데이트가 필요한 상황에서 유용합니다. 예를 들어, 결제 시스템에서 결제가 성공했을 때 Webhook이 트리거되어 결제 성공 메시지를 외부 시스템으로 전송할 수 있습니다.

3. 경량화된 통신

Webhook은 HTTP 프로토콜을 사용하여 POST 방식으로 데이터를 전송하는 경량화된 방식입니다. 데이터를 최소화하여 필요한 정보만 전송하므로 빠르고 간단하게 서버 간 통신을 할 수 있습니다.

Webhook의 작동 원리

  1. Webhook을 사용하려는 서비스에서 Webhook URL을 설정합니다. 이 URL은 Webhook이 데이터를 전송할 대상 서버의 엔드포인트입니다.

  2. 설정된 서버에서 특정 이벤트가 발생하면 Webhook이 트리거됩니다.

  3. Webhook은 HTTP POST 요청을 통해 설정된 URL로 이벤트 관련 데이터를 전송합니다. 전송되는 데이터는 주로 JSON 형식으로 제공됩니다.

  4. 데이터를 수신한 서버는 해당 데이터를 처리하고, Webhook이 성공적으로 처리되었음을 응답으로 반환할 수 있습니다. 일반적으로 200 OK 응답이 전송됩니다.

Webhook 사용 사례

  • 결제 처리 시스템
    결제 서비스(예: Stripe, PayPal)에서 결제가 성공하거나 실패했을 때 Webhook을 통해 사용자의 시스템에 결제 결과를 실시간으로 전달할 수 있습니다.

  • CI/CD 파이프라인
    GitHub, GitLab 등에서 코드가 변경되었을 때 Webhook을 사용해 CI/CD 서버(Jenkins, Travis CI 등)에 이벤트를 전송하고, 자동 빌드 및 테스트를 실행할 수 있습니다.

  • 알림 시스템
    고객 지원 도구(예: Zendesk)에서 새로운 티켓이 생성되면 Webhook을 통해 해당 알림을 Slack이나 이메일로 보낼 수 있습니다.

  • 마케팅 자동화
    이메일 마케팅 툴(예: MailChimp)에서 구독자가 추가되거나 삭제될 때 Webhook을 통해 CRM 시스템에 자동으로 데이터를 전송하고 동기화할 수 있습니다.

Webhook과 API의 차이점

1. API

클라이언트가 서버에 요청을 보내고, 서버는 요청에 응답하는 방식으로 요청이 발생할 때마다 데이터를 가져오려면 클라이언트가 직접 호출해야 합니다. 그러므로 실시간 통신을 해야하는 경우 일정한 간격으로 서버에 데이터를 요청하는 폴링 방식을 사용할 수 있습니다.

2. Webhook

서버에서 특정 이벤트가 발생할 때 자동으로 데이터를 전송하는 방식으로 클라이언트가 요청하지 않아도 서버에서 실시간으로 데이터를 푸시합니다. 그러므로 실시간 통신이 필요하거나 이벤트 중심의 작업에 적합합니다.

3. Webhook의 장점과 단점

장점

  • 효율성
    불필요한 폴링 없이 필요한 이벤트가 발생했을 때만 데이터를 전송하므로 네트워크 리소스를 절약할 수 있습니다.

  • 실시간 데이터 처리
    실시간으로 이벤트를 처리할 수 있어, 변경 사항이나 중요한 이벤트가 발생하면 즉시 반응할 수 있습니다.

  • 간단한 구현
    설정 및 구현이 간단하고, 기존 RESTful API 인프라를 활용할 수 있어 쉽게 통합할 수 있습니다.

단점

  • 보안 이슈
    Webhook은 일반적으로 공개된 URL을 사용하기 때문에, 외부에서 악의적으로 접근할 가능성이 있습니다. 따라서 인증이나 서명 방식으로 보안을 강화해야 합니다.

  • 신뢰성 문제
    이벤트가 발생할 때 HTTP POST 요청을 보내는 방식이므로, 네트워크 오류나 서버 오류가 발생할 경우 이벤트 전달이 실패할 수 있습니다. 이를 보완하기 위해 재시도 로직이 필요할 수 있습니다.

Webhook 보안

  • 비밀 토큰 사용
    Webhook 호출 시 비밀 토큰을 포함해 클라이언트와 서버 간의 신뢰성을 확보합니다.

  • IP 화이트리스트
    특정 IP에서만 Webhook 요청을 허용하여 악의적인 요청을 차단할 수 있습니다.

  • SSL/TLS 암호화
    Webhook URL에 HTTPS를 사용해 데이터를 암호화하여 안전하게 전송합니다.

Reference

profile
개발자의 기록하는 습관

0개의 댓글