춤추는 개발자

웹훅[Webhook]이란 무엇일까? 본문

Developer's_til/그외 개발 공부

웹훅[Webhook]이란 무엇일까?

Heon_9u 2021. 10. 24. 23:23
728x90
반응형

 

 

 

✅ Webhook

 웹훅은 웹페이지 or 웹앱에서 발생하는 특정 행동(이벤트)들을 커스텀 Callback으로 변환해주는 방법으로 이러한 행동 정보들을 실시간으로 제공하는데 사용됩니다.

 

 보통 REST API로 구축된 웹 서비스는 하나의 요청에 따라 하나의 응답을 제공합니다. 이러한 구조로 인해 특정 이벤트가 발생했는지 조회하려면 서버로의 요청이 선행되어야 합니다.

 

 즉, 일반적인 API(Polling)는 클라이언트가 서버를 호출하는 방식입니다. 하지만, 웹훅은 서버에서 특정 이벤트가 발생했을 때, 클라이언트를 호출하는 방식으로써 역방향 API라고도 불립니다.

 이렇게 서버측에서 클라이언트의 어떤 URL로 데이터를 보낼지 정해놓은 주소를 바로 Callback URL이라고 부릅니다.

 

 

✅ Webhook endpoint

 웹훅이 이벤트 핸들러라면 웹훅 엔드포인트는 발생한 이벤트가 어디로 전달되어야 하는가에 대한 것이다. 즉, 이벤트의 목적지인 Target이 됩니다.

 

🛠 참고사항
 Slack API에는 외부 시스템에서 Slack으로 post message를 쏴주는 incoming webhooks이 존재합니다.
즉, 이벤트로 인해 웹훅이 실행되면 내부에서 Slack의 웹훅 엔드포인트로 post요청을 쏘라는 말이 됩니다.
그러면 Slack 채널에 특정 메세지를 입력할 수 있게 됩니다.

 

 

✅ Webhook 활용성

 예를 들어, 메일을 수신할 수 있는 웹앱의 클라이언트와 서버가 있다고 가정하겠습니다. 구현할 것은 서버측에서 메일을 수신하였을 경우, 클라이언트 측으로 알림 메시지를 전달하는 것입니다.

 

일반적인 API(Polling)는 다음과 같은 비즈니스 로직이 처리됩니다.

1. 클라이언트에서 메일이 수신되었는지 확인하기 위해 서버로 요청

1-1. 수신된 경우

- 메일 정보를 받아옴

- 클라이언트에서 해당 메일 정보를 파싱하여 화면에 출력

1-2. 수신되지 않은 경우

- 재요청, 1번으로 돌아감 or 미수신 관련 로직으로

 

하지만, 웹훅을 이용한다면 간략한 순서로 진행됩니다.

1. 메일이 수신된 경우, 미리 지정한 클라이언트의 Callback URL로 메일에 대한 정보를 전송(HTTP POST)

- 클라이언트에서 해당 메일 정보를 파싱하여 화면에 출력

 


 

 두 가지 차이점을 본다면, 특정 이벤트가 발생했는지 확인하는 절차의 유무입니다. 즉, 전체적인 API 요청 횟수가 적어지기 때문에 웹훅을 이용한다면 보다 효율적인 서비스를 구현할 수 있을 것입니다.

 

 다만, 주의해야할 점은 웹앱이 중단된 경우, 웹훅으로부터 오는 데이터가 유실될 가능성이 존재합니다. 또는, 웹훅으로부터 오는 요청을 처리 완료했지만, response를 제대로 보내지 못했을 경우에 웹훅에서 response가 실패인 것을 확인하고 동일한 정보를 다시 보낼 가능성이 있습니다.

 이러한 상황을 고려하며 메서드별로 예외 처리를 적용해야 할 것입니다.

 

 

728x90
반응형