Webhook은 서버 간의 실시간 통신을 위한 HTTP 기반의 콜백 메커니즘이다. 특정 이벤트가 발생했을 때, 그 정보를 즉시 다른 서버로 전달하는 방식이다. 서버가 주기적으로 상태를 확인(polling)하지 않고도 이벤트가 발생할 때만 알림을 받기 때문에 효율적이다.
- 상황: 홍길동이 Github에 프로젝트를 올려두고, 코드 변경(push)이 발생 할 때마다 슬랙(Slack) 채팅방에 알림을 보내고 싶다고 가정한다.
- 해결 방법:
Https://hooks.slack.com/services/TOKEN (슬랙 서버의 Webhook URL){
"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"
}
]
}
[GitHub] 홍길동이 'project-repo'에 새로운 커밋을 푸시했습니다: "Update README.md"
- 실시간 데이터 전달: 이벤트 발생 시 바로 알림을 받음.
- 간결한 통신: 서버가 주기적으로 요청하지 않아도 됨.
- 유연성: 다양한 서비스 간의 자동화 작업에 활용 가능 (예: 결제 확인, 주문 처리, 알림 발송 등)
- Webhook: 서버가 이벤트 발생 시 자동으로 알림을 보냄
- API: 클라이언트가 직접 요청해야 서버에서 데이터를 응답
현재 진행중인 프로젝트에서 Webhook을 이용해서 실시간 알림을 구현할 거 같은데..흠.....할 수 있겠지