인프라
@초록머리님이 위키 내용을 고쳤습니다.

웹훅(Webhook)이란?

Webhook이란?

1. 웹 서비스를 제공해주는 서버 단에서 어떤 이벤트를 외부에 전달하는 방법중의 하나입니다.

2. Webhook(웹훅)이란, 서버에서 어떠한 작업이 수행 되었을 때 해당 작업이 수행되었음을 HTTP POST로 알리는 개념을 말합니다. Webhook을 구현한 웹 애플리케이션은, 특정 작업이 수행될 때 URL에 대해 POST방식으로 요청을 생성합니다. 이 때, url(콜백 url)은 웹 애플리케이션을 사용하는 유저가 자신의 URL을 지정할 수 있습니다.

유저의 입장에서는 지속적으로 데이터를 폴링(polling)하여 대부분의 경우 불필요한 정보를 받는 대신, webhook을 활용하여 중요한 이벤트가 발생했을 때에만 정보를 수신할 수 있습니다. 이를 활용하여 유저의 커스텀 기능이나 다른 애플리케이션과 통합하거나 기능을 확장할 수 있습니다.

예시)

예를 들어 어떤 게시판을 제공하는 서비스가 있다고 할 때,

게시판에 새로운 글이 등록될 때마다, 특정 알림을 다른 서비스나, 메신저에 알리려고 할 때 유용할 수 있습니다.

위 상황에서 게시판에 새로운 글이 등록된다는 사실을 알아내야만 후속되는 처리를 할수 있습니다.

만약 게시판 제공 서비스에서 어떤 액션(위 예에서 새로운 글 등록)이 일어나는 것에 대해 훅킹( 어떤 액션 앞뒤에다가 추가로 정해진 일을 하도록 하는 것 )할 수 있다면, 위의 상황을 처리할 수 있습니다.

여기에서 웹훅은 앞의 훅킹을 웹 환경에서 제공하는 것으로 보면 될 것 같습니다.

먼저 서비스(위에서 게시판 제공 서비스)에 후킹할 수 있도록 기능 제공해야 합니다. 후킹을 해서 뭔가 처리하려는 서비스를 자신이 만들고, 이 서비스 URL을 앞의 게시판 제공 서비스와 같에 정보 제공 서비스에 다가 등록하는 방식이 웹훅인 것 같네요.

일반적으로 웹서비스는 정보를 필요로하는 측이 클라이언트로서 서비스에 요청하는 것인데 반해, 웹훅은 그 반대 방향으로 요청됩니다. 정보로 필요로하는 측이 서버가 되고, 엔드포인트 주소를 서비스에 제공하게 되며, 서비스는 어떤 정보를 줄수 있는지 공개하는 방식으로 생각하면 될 것 같습니다.

  • 훅킹URL을 제공하는 서비스
    • 이 경우는 다른 서비스 개발자가 이 후킹 서비스를 호출하도록 형태일 것 같습니다.
    • 예를 들어, 메신저와 같은 서비스는 훅킹URL을 제공하여, 다른 서비스에서 발생하는 조건에 따라 메신저 내에서 어떤 일(메시지 발송 등)을 하도록 할 수 있을 것 같네요.
  • 훅킹이 가능한 서비스를 만들 수도 있습니다.
    • 서비스를 만들면서, 주요 이벤트들을 외부에서 알아챌 수 있도록 하고, 어떤 이벤트가 발생하고, 데이터를 어떻게 전달하는 지 명세한 후, 이벤트마다 URL을 등록 받을 수 있을 것 같습니다.

테스트를 위한 도구들

RequestBin

ngrok

Ultrahook : 로컬에 웹훅을 받을 수 있게 해주는 도구

참조 링크

원문1

원문2

원문3:테스트 도구

작성
공감해요
기술 가이드 빠띠의 다른 게시글 더 보기
기술 가이드 빠띠의 다른 게시글 더 보기
기술 가이드 빠띠는? 자세히 보기
빠띠에 쓰이는 기술을 소개하고 그 기술을 익히기 위한 가이드를 모읍니다.
기술 가이드 빠띠에 가입해서 흥미진진한 소식을 받아보세요.
가입하기