CS & SW & IT 용어

[Webhook]이란 무엇인가

Haksae 2021. 12. 25. 02:34

1. Webhook이란?

"A webhook in web development is a method of augmenting or altering the behavior of a web page or web application with custom callbacks." - 위키피디아

 

  • 위의 설명에 따르면 웹훅은 웹 페이지 또는 웹 앱에서 발생하는 특정 행동(이벤트)들을 커스텀 콜백으로 변환해주는 것이다.

2. 왜 Webhook을 사용하는가?

  • 일반적인 API(Polling)는 클라이언트가 서버를 호출하는 방식이라면, 웹훅은 서버에서 특정한 이벤트가 발생했을 때 클라이언트를 호출해주는 방식이다. (그렇기에 역방향 API라고도 부른다.)
  • 아래의 그림이 폴링과 웹훅의 차이를 잘 보여준다.

  • API 구현 방식
    • 클라이언트 -> 서버 : 이벤트가 발생하였는가? (발생하지 않았을 경우 재요청)
    • 이벤트가 발생했을 경우 해당 정보를 받아옴
    • 클라이언트에서 해당 이벤트를 처리함
  • Webhook 구현 방식
    • 서버 -> 클라이언트 : 이벤트가 발생했을 경우 미리 지정한 클라이언트 callback URL로 정보를 보냄 (HTTP POST)
    • 클라이언트에서 해당 이벤트를 처리함

 

  • 지속적으로 이벤트가 발생하였는지에 대한 여부를 확인하는 Polling와 달리 웹훅을 이용하면 서버 측에서 이벤트가 발생할 경우에 클라이언트 HTTP POST를 하므로 클라이언트에서는 해당 이벤트를 핸들러를 통해 처리만 하면 된다.
  • 즉 절대적인 API 요청 횟수가 적어지기 때문에 웹훅을 사용할 경우 보다 효율적이게 된다.

3. Webhook 구현시 주의할 점

  • 어떠한 이유에 의해서 웹앱이 중단되었을 경우 웹훅으로부터 오는 데이터가 유실될 가능성 존재
  • 웹훅으로부터 오는 요청에 대하여 처리를 완료하였으나, response를 제대로 보내지 못할 경우 웹훅에서 실패로 인지하고 동일한 정보를 다시 보낼 가능성이 있다.
  • 이러한 문제 가능성을 인지하고 상황에 맞는 예외처리를 해주어야한다.