
Webhook 이란
웹 서비스를 만들다 보면 webhook 이라는 것을 가끔 듣게 됩니다. 그런데, 챗봇의 경우에는 상당히 자주 듣게 됩니다. 그럼 webhook(이하 웹훅)은 대체 뭐길래 챗봇에서 자주 등장하는걸까요. 우선 위키백과에 올라와 있는 내용을보겠습니다. Webhook 웹훅은 웹 개발에서 콜백이 있는 웹 페이지 혹은 웹 응용프로그램을 보강 혹은 변경하기 위한 방법. 이러한 콜백은 다른 응용 프로그램 혹은 3rd Party 프로그램에게 유지,변경,관리 하도록 한다. 조금 이상한 번역이 되었는데, 조금 풀어서설명하겠습니다. 쉽게 말하면, 하나의 웹 서비스를 만드는데, 이벤트가 발생한 하나의 프로그램이 다른 내부 프로그램 혹은 외부(3rd party)에게 그 변경 사항을 알려주는 REST API 를 이용하는 기술적인 방법을의미합니다. 사실, 쉽게 설명한다고는 했으나 여전히어렵습니다. 조금 더 쉽게 예시를 들어가며 설명해보겠습니다. A라는 연예인 팬클럽을 운영하는 서비스가 있습니다. 사용자가 게시물을 작성하고 나서, 다른 사용자가 해당 게시물에 댓글을 달면, 글을 쓴 사용자에게 이메일을 보내주는 기능이 있다고치겠습니다. 이 경우에 이메일을 보내주는 기능 자체는 기본적으로 웹훅으로 간주됩니다. 혹 이메일이 아니라, 슬랙을 통해서도 메시지를 보낼 수있습니다. 일반적으로 우리가 “어디에선가” 데이터의 변경 사항을 알 수 있는 방법은 크게 2가지가있습니다. 1. 주기적으로 내가 직접 가서 변경사항을 체크하는 방법 - 크롤링 ( crawling ) 2. 변경 사항이 발생 했을때 나에게 알려주는 방법 - 웹훅 ( webhook ) 분명 웹훅을 이용해서 변경점을 알려주는 기능을 추가하려면 번거롭습니다. 그렇다면 왜 이 기능을 웹 서비스에추가하는걸까요? 이유는 간단합니다. 1. 사용자에게 좀 더 빠른 피드백을 가능하게 한다. -> 알림이 오면 사용자는 해당 알림을 확인하겠죠? 2. 사용자에 따라서는 웹훅을 제공안하면 주기적인 크롤링을 한다. -> 서버의 부하가 몇배는 커집니다. 일반적으로 웹훅은 정말로 많은 서비스에서 사용이 되지만, 챗봇 혹은 채팅 관련에서는 필수로 제공되는기능입니다. 예를들면 카카오톡의 챗봇을 만들거나 혹은 슬랙의 다양한 챗봇기능을 만들때도 웹훅을 이용하게됩니다. 사용자가 채팅창( 카카오톡 앱 혹은 슬랙 )에서 대화(메시지)를 남겼을때, 챗봇이 즉시 반응하지 않으면안되겠죠? 그러니 일정 주기로 크롤링을 하는 방식으로는 쓸수가 없고, 당연히 웹훅을 이용해야만합니다. 일반적으로 웹훅은 다음과 같은 구조로 이뤄지게됩니다. 1. 사용자가 채팅창에 대화를 입력하여 전송합니다. 2. 채팅 서버는 챗봇 서버로 웹훅을 통해서 메시지를 전달합니다. 3. 챗봇 서버는 해당 웹훅에 대한 응답을 리턴합니다. 4. 채팅 서버는 사용자에게 해당 대화에 대한 응답을 리턴합니다. Webhook 이란 was originally published in Dreamyoungs on Medium, where people are continuing the conversation by highlighting and responding to this story.
