Webhook이란?

젼이·2024년 10월 24일

Webhook이란?

Webhook서버 간의 실시간 통신을 위한 HTTP 기반의 콜백 메커니즘이다. 특정 이벤트가 발생했을 때, 그 정보를 즉시 다른 서버로 전달하는 방식이다. 서버가 주기적으로 상태를 확인(polling)하지 않고도 이벤트가 발생할 때만 알림을 받기 때문에 효율적이다.


Webhook의 개념 예시

1. Github - 코드 푸시 알림

- 상황: 홍길동이 Github에 프로젝트를 올려두고, 코드 변경(push)이 발생 할 때마다 슬랙(Slack) 채팅방에 알림을 보내고 싶다고 가정한다.

- 해결 방법:

  • Github의 Webhook 설정을 통해, 코드가 push 될 때마다 슬랙 서버의 특정 URL로 HTTP 요청을 전송하도록 한다.
  • 이 요청에는 어떤 리포지터리에서, 어떤 파일이 수정되었는지에 대한 이벤트 데이터가 포함된다.




Webhook의 동작 방식

  1. 이벤트 발생: Github에서 코드가 push 된다.
  2. HTTP 요청 전송: GitHub 서버가 미리 설정된 슬랙 서버의 URL에 데이터를 포함한 HTTP 요청을 전송한다.
  3. 슬랙 서버에서 알림 처리: 슬랙 서버는 HTTP 요청을 받아 파싱한 후, 적절한 메시지를 홍길동의 슬랙 채팅방에 보낸다.




Webhook 사용 예제 (Github -> Slack)

  1. GitHub에서 Webhook 설정
  • 설정 경로: GitHub Repository -> Settings -> Webhooks
  • URL : Https://hooks.slack.com/services/TOKEN (슬랙 서버의 Webhook URL)
  1. GitHub이 보내는 HTTP 요청 예시 (JSON 포맷)
{
  "ref": "refs/heads/main",
  "before": "abc123",
  "after": "def456",
  "repository": {
    "name": "project-repo",
    "owner": {
      "login": "jihyun-song"
    }
  },
  "pusher": {
    "name": "송지현"
  },
  "commits": [
    {
      "id": "def456",
      "message": "Update README.md"
    }
  ]
}
  1. 슬랙이 메시지로 변환
  • 슬랙 서버가 위 JSON 데이터를 받아 아래와 같이 채팅방에 알림을 보낸다.
[GitHub] 홍길동이 'project-repo'에 새로운 커밋을 푸시했습니다: "Update README.md"




Webhook의 장점

- 실시간 데이터 전달: 이벤트 발생 시 바로 알림을 받음.
- 간결한 통신: 서버가 주기적으로 요청하지 않아도 됨.
- 유연성: 다양한 서비스 간의 자동화 작업에 활용 가능 (예: 결제 확인, 주문 처리, 알림 발송 등)





Webhook과 API의 차이점

- Webhook: 서버가 이벤트 발생 시 자동으로 알림을 보냄
- API: 클라이언트가 직접 요청해야 서버에서 데이터를 응답







현재 진행중인 프로젝트에서 Webhook을 이용해서 실시간 알림을 구현할 거 같은데..흠.....할 수 있겠지

profile
신입 개발자 임니당 : > (2025.02.05~)

0개의 댓글