본문 바로가기

Programming/General tips

웹훅(Webhook)이란 무엇인가?

웹훅(Webhook)이란 무엇인가?

엇!? 웹훅이라는게 있었어? 내가 처음 들었을때 느낌이다. 훅을 걸다? 정도의 느낌으로 주기적으로 서버에서 함수를 실행 시킨다거나 일정한 동작이나 작업이 웹훅인가 했다. 웹훅의 정의를 찾다가 참고한 글에 이렇게 나와있다.

 

A webhook (also called a web callback or HTTP push API) is a way for an app to provide other applications with real-time information.

 

쉽게 말해서 웹훅은 http 의 push API 를 활용해서 데이터를 전달하는 방식 중 하나이다. 새로운 데이터가 추가 되거나 기존의 데이터의 업데이트, 또는 보내고자 하는 데이터를 해당 정보를 받거나 받아야 하는 유저나 어플리케이션 정보를 url 로 가지고 있으면서 클라이언트의 요청없이 서버에서 해당 유저나 어플리케이션으로 데이터를 전달하는 것이다. 마치 푸시 알림이나 이메일, 블로그 구독과 같은 기능인 셈이다.

웹소켓(Websocket)과 다른건가?

YES!! 웹 소켓과는 다르다. 간단히 말해서 웹소켓의 경우 클라이언트와 서버간에 소켓을 통해 서로가 연결되어 있어야만 브로드케스팅을 하던 에밋을 하던 정보를 전달할 수 있다. 소켓 연결이 끊어지면 서버에서 url 을 모르기 때문에 어떤 유저나 어플리케이션으로 데이터를 전달해야 할지 알 수 없다. 하지만 웹훅은 새로운 데이터를 전송할 url 만 알고 있으면 서버에서 전달받은 데이터를 원하는 곳으로 보내줄 수 있다.

Request > Response 방식이 아닌 Response > Receive 방식으로 요청에 상관없이 전달 받을 수 있다. 웹훅의 장점 중 하나는 어떠한 데이터든 실시간으로 전달 받을 수 있다는 것이다. Polling 같은 방법을 사용할 수 있지만 폴링의 경우 새로운 데이터가 없으면 응답받을 정보가 없기 때문에 무의미한 요청만 날리는 셈이된다. 낭비 인듯 싶다. 이때 웹훅을 사용하면 불필요한 요청과 메모리 사용을 줄일 수 있다. 이러한 이유에서 "Reverse APIs" 라고도 불린다.

 

참조:
https://sendgrid.com/blog/whats-webhook/