web hook 이란
HTTP 기반 콜백 기능입니다.
여기서 콜백이란 나중에 호출해 준다는 의미이고 콜백이란 함수를 호출할때 지금 호출하는게 아니라 특정 시점에 이벤트 트리거가 될때 호출이 되는 함수를 콜백 함수라고 합니다. 여기에서는 HTTP의 url 을 호출해준다는 의미입니다.
web hook 은 언제 필요할까?
HTTP 서버를 이용해서 뭔가를 만들었습니다. 나의 Client SW에서 특정 버튼을 누르면 HTTP 서버로 여러가지 응답에 대한 결과를 받아올것입니다. 이것은 AJAX 혹은 REST API 와 같은 기술을 사용하게 될것 입니다. 만약 사용자가 특정 버튼을 누르지 않았는데도 서버가 나에게 알릴 필요가 있을것입니다. 메신저 클라이언트라고 한다면 예들들어 누군가 나에게 메시지를 보냈을때 HTTP 서버가 Client에서 메세지를 보낼방법이 필요합니다. 이때 사용하는것이 WEB HOOK 이 되고, 물론 WEB HOOK 대안으로 Polling 방식으로 주기적으로 메세지가 왔는지 확인하는 방법도 있습니다.
요즘 들어 Web hook 얘기가 많이 나오는 것은 고전적인 C/S(Client/Server) SW에서는 HTTP 기술을 이용하여 구현하지 않고 자체 Protocol 방식으로 되어 있었기 때문에 TCP Connection형태로 되어있어서 Protocol 내에서 자체적으로 해결해야 했습니다.
그러나 현재 많은 부분에서 HTTP 기반 C/S SW를 많이 사용하고 있습니다. 아무래도 HTTP가 예전보다는 API 지원도 많이 활성화되어 보다 쉽게 접근이 가능하기 때문일 것 같습니다.
web hook 간단한 버전
web hook이라고 해서 대단한 기술이 있는것은 아닙니다. HTTP 특성상 한쪽이 서버가 되어 한쪽은 정보를 제공하고 있으므로 Client 갯수가 한정적인 경우 web hook 을 전체적으로 구현한다기 보다는 hard coding된 쌍방향 REST API 서버 형태를 만들면 됩니다.
web hook 을 받는 url의 경우도 간단하게나마 http 규격으로 동작을 해야하기 때문입니다.