🧑🏻‍🏫 주제 : Webhook

  • slack 과 github action, META 의 Webhook 등등,,.자주 보이는 이 친구의 개념은 뭘까?
  • Webhook 이란 ?
    • 사용자 정의 HTTP(웹훅의 웹.. ) 콜백.
    • 웹훅의 web 은 “HTTP 기반 통신” 을, hook 은 client app 이 관심 있는 이벤트를 가로챌 수 있도록 한다는 의미.
      • 서버 app 에서 발생하는 이벤트를 후킹해 client 로 그 페이로드를 전송하도록 함.
    • 프로그래밍 세계에서 일반적으로 사용되는 callback 처럼. 사용자가 정의해둔 callback 은 특정 event 가 발생할 경우 trigger 된다
    • HTTP 를 통해 app 간 데이터를 “자동”으로 전송하는 “이벤트 기반 통신” 을 할 수 있게 한다
  • 어떤식으로 구성되나?
    • 주로, Webhook Server 는 Webhook 에 구성된 URL ( webhook 을 통해 특정 event 가 발생했을 때 어떤 통신을 받고자 하는 client 측의 URL ) 에 HTTP 요청을 보낸다
      • HTTP 를 사용하기에 웹 서비스에 쉽게 통합 시킬 수 있음
      • 주로 HTTP POST 방식의 통신.
    • 따라서, Webhook 이 호출할 수 있는 API URL 을 client 가 제공하고 있어야 함.

 

Webhook 을 사용하는 client 입장이 될 일이 더 많을텐데, client 입장에서 webhook 에 대해 생각해 보자

 

  • Client 입장
    • 장점
      • client 가 server 에 대해 API 를 일정 주기로 호출하며 polling 하던 상황을 반전시킬 수 있음. → Scheduler, Batch 등을 통해 , event 가 발생하지 않는 동안에도 클라이언트는 주기적으로 리소스를 소비해야 하던 것을 → client 의 로직이 event 기반으로 트리거 되도록 할 수 있음
      • Client → Server polling 시에 통신의 책임은 Client 였음.
        • webhook 사용시 통신의 책임은 Server 가 됨.
      • client 는 더 이상 pull 이 아닌 push 를 받는 입장이 되는 것임.
    • 단점
      • API 기반 이므로, 가벼운 payload 에 적합.
      • client 로 push 가 되어오다 보니, client 를 보호하기 위한 전략도 필요함.
        • 보안
          • mTLS(mutual TLS)
            • payload 전송 전 client 와 server 를 모두 검증하는 인증 방식.
          • SSL
        • 부하
          • 데이터 전송 시점을 클라이언트가 제어하는 것이 아니므로 부하를 고려해야함.
            • 이로인해 가벼운 페이로드만 받는데 적절한 것이기도 함.

 


REF

https://ko.wikipedia.org/wiki/웹훅

https://www.redhat.com/ko/topics/automation/what-is-a-webhook

 

웹후크란? 실시간 자동화와 webhook 구현 방법

웹후크란 특정 이벤트가 발생했을 때, 사전에 지정한 URL(또는 엔드포인트)로 실시간 알림 또는 데이터를 자동 전송하는 방식입니다. webhook 구현 방법을 알아보세요

www.redhat.com

 

 

Webhook 의 시작이 된 글 (아직 읽지 않음) https://progrium.github.io/blog/2007/05/03/web-hooks-to-revolutionize-the-web/

복사했습니다!