Webhook

정은영·2022년 11월 28일
1

CS

목록 보기
7/18

Webhook이란?

Webhook(웹훅)이란, 특정 이벤트가 발생하였을 때 타 서비스나 응용프로그램으로 알림을 보내는 기능입니다. Webhook 프로바이더는 해당 이벤트가 발행하면 HTTP POST 요청을 생성하여 callback URL(endpoint)로 이벤트 정보을 보냅니다. 주기적으로 데이터를 폴링(polling)하지 않고 원하는 이벤트에 대한 정보만 수신할 수 있어서 webhook은 리소스나 통신측면에서 훨씬 더 효율적입니다. Webhook을 활용하면 커스텀 기능이나 다른 애플리케이션과 연동하여 기능을 확장할 수 있습니다.



Webhook이 필요한 이유

웹훅은 웹앱에서 발생한 이벤트 정보를 "실시간" 으로 제공하기 위해서 필요합니다.


Rest API로 구축된 웹 서비스의 경우, 하나의 요청에 따라 하나의 응답을 제공합니다.
이러한 구조로 인해 어떠한 이벤트가 발생했는지 조회하기 위해서는 서버로의 요청이 먼저 선행되어야 하는 문제점이 생기게 됩니다.


서버에 예상치 못한 예외가 발생했을 때, 개발자가 이를 알기 위해서 어떻게 해야 할까요?


1번 방법으로, 예외 상황을 확인하는 백엔드 API를 구축하는 방법이 있습니다. 해당 API로 요청을 보내 서버에 예상치 못한 예외가 발생했는지 조회할 수 있습니다. 하지만 요청을 보내야 응답을 받을 수 있다는 단점이 있습니다. 또한 궁금할 때마다 서버에 요청을 보내야 하기 때문에 비효율적입니다.


2번 방법으로, 예외 상황이 발생하면 웹훅을 통해 알려주는 방법이 있습니다. 서버 측에서 직접 개발자가 소식을 받아볼 수 있는 엔드포인트로 요청을 보냅니다. 개발자는 가만히 있다가 서버가 직접 요청을 보내오면 예외 상황을 확인하면 되는 것입니다.



Webhook API 구현

이번에 Jetbrains의 협업툴인 Space의 확장프로그램을 개발하면서 Webhook Api를 구현하였습니다. 사용자가 이슈를 새로 생성하거나 이슈의 status/assignee가 변경되었을 때, 이슈가 삭제되었을 때 Space에서 제가 구현한 백엔드 API의 엔드포인트로 POST 요청을 보내게 됩니다. 그리고 그 요청에 따른 작업을 하도록 구현하였습니다.




REFERENCE

https://joel-dev.site/88
https://docs.iamport.kr/tech/webhook

0개의 댓글