웹훅(Webhook)

문다예·2024년 11월 27일

IT

목록 보기
1/1
post-thumbnail

1. 웹훅(Webhook)의 개념

💡

웹훅이란?

데이터가 변경되었을 때 실시간으로 알림을 받을 수 있는 기능

웹훅 동작 상태

이미지: tosspayments 개발자 센터

📌
  1. 클라이언트가 서버에게 웹훅을 받을 URL을 제공하고 받을 이벤트를 등록한다.
  2. 등록한 이벤트가 발생하면 클라이언트는 제공한 URL이벤트 데이터를 받을 수 있다.

웹훅이 생긴 이유?

💡

기존의 API 폴링(Polling)을 사용하면 클라이언트가 서버 API를 호출해서 이벤트가 발생했는지 확인해야 하는 단점이 있다!

API 폴링 동작 상태

이미지: tosspayments 개발자 센터

📌

클라이언트가 n초 간격으로 request를 서버로 계속 날려서 response를 전달받는 방식

웹훅, API 폴링의 차이점 비교

웹훅API 폴링
방식이벤트 발생 시 클라이언트에게 자동으로 데이터를 전송한다. (푸시 방식)라이언트가 정기적으로 서버에 요청을 보내 새 데이터를 확인한다. (풀 방식)
동작 원리사전에 설정된 URL로 POST 요청을 통해 이벤트 전달주기적으로 GET 요청을 보내 데이터를 가져온다
예시친구에게 "시간 나면 전화 줘"라고 문자를 남기는 것API 폴링은 친구가 받을 때까지 계속 전화하는 것

웹훅, API 폴링의 장단점 비교

웹훅장점단점
실시간 업데이트 가능설정 복잡 (클라이언트가 웹훅 엔드포인트를 준비해야 함)
서버와 클라이언트 간 불필요한 요청 최소화보안 위험 (웹훅 URL이 노출될 경우 악용 가능)
API 폴링장점단점
구현이 단순 (웹훅 설정 불필요)불필요한 요청이 많아 리소스 낭비
서버에 직접적인 제어가 없어도 데이터를 가져올 수 있다실시간성 부족 (폴링 주기에 따라 데이터 지연 발생)

2. 토스페이먼츠의 웹훅(Webhook) 연결 사례

  1. 웹훅 이벤트 타입 지정

이미지: tosspayments 개발자 센터

📌

토스의 경우 직관적인 이벤트 타입을 명시하여 해당 이벤트가 무엇을 의미하는지 알 수 있다!

  1. 웹훅 등록

이미지: tosspayments 개발자 센터

📌

해당 DEPOSIT_CALLBACK 이벤트 예시

DEPOSIT_CALLBACK 이벤트 등록: 결제 상태가 변경되어 등록한 이벤트가 발생하면 웹훅 URL로 웹훅 이벤트가 전송된다.

  1. 웹훅 상태 확인

이미지: tosspayments 개발자 센터

📌

전송 상태는 '전송 중', '성공', '실패' 중 하나

3. 카카오톡 오픈 채팅 웹훅 사용 사례

광운대학교 개발자 오픈채팅방

/가이드
📌

오픈채팅 방장봇이 지정해 둔 명령어를 입력하면 자동으로 해당 명령어가 실행되어 결과를 받을 수 있다!

4. 슬랙으로 웹훅 직접 설정

  1. 수신 웹후크 앱 추가
  1. 슬랙 채널에 웹 후크 설정 추가

📌

해당 #테스트 채널에 웹후크(incoming-webhook)가 추가되었음을 확인할 수 있다.

  1. postman으로 웹후크 URL 테스트

{
    "channel": "테스트",
    "username": "문다예_bot",
    "text" : "hello world",
    "icon_emoji" : ":mega:"
}
  1. 슬랙 채널 테스트 확인

📌

username 문다예_bot이 생성되어 hello world를 출력하였다.

profile
사용자를 우선으로 생각하는 개발자입니다. HCI Developer

0개의 댓글