본문 바로가기

WEB/Webhook

[Webhook] 웹훅

반응형

[서론]

회사에서 화상회의 관련 연동을 진행하면서.

화상 회의 솔루션과의 연동을 webhook방식으로 진행할 기회가 생겼다.

연동하며 찾은 자료와 간단한 느낀점을 정리한다.

 

[본론]

1. Webhook이란?

- 웹훅을 한마디로 정의하면 역방향 API이다.
클라이언트에서 요청하는 보통의 API와는 다르게, 서버에서 특정 동작이 끝나면 클라이언트에서 등록한 특정 동작을 수행하는 것이다.

클라이언트에서 콜백 url(endpoint)을 서버에 등록하면 서버에서 특정 동작이 수행될 때 해당 endpoint를 호출한다.

 

2. 언제 Webhook을 사용하는지?

- 특정 서비스의 에러 발생이나, 특정 이벤트 발생을 알고 싶을때 사용한다.

예를 들어 지금 개발하는 서비스에선

화상 회의 쪽의 회의실 생성, 회의 종료, 사용자가 회의실에 참여 등의 이벤트가 발생했을 때 

우리 서비스에서 역으로 요청을 받고 싶을 때 사용한다.

 

3. 왜 Webhook을 사용할까?

위의 화상회의 상황에서 화상회의 회의가 종료되었는지 배치 등을 통해 주기적으로 체크해 처리할 수도 있다.

하지만 이는 반복적으로 화상회의의 상태를 확인해야 하며 비효율적이다.

이를 해결하기 위해 webhook을 사용한다.

 

화상 회의에서 제공하는 webhook에 우리의 endpoint를 등록하고, 화상 회의 이벤트 발생 시 

우리의 함수를 호출해 처리하는 방식이다.

 

아래의 예시를 보자

일반적인 서비스간의 연동 방식의 예시이다.

일반적인 연동 방식

일반적으론 위의 사진처럼 연동 서비스에서 이벤트가 발생하면

내가 만든 서비스의 API를 호출한다.

API 주소 및 파라미터는 서로간의 협의해서 개발하게 되고, 나만을 위한 콜백 함수가 만들어지게 된다.

 

아래는 webhook 방식의 예시이다.

webhook 방식

기존 서비스처럼 이벤트 발생 시 내가 만든 서비스의 API를 호출한다는 것은 똑같다.

하지만 불특정 다수를 하는 서비스에서 내가 만든 서비스만을 위해 개발을 해 주지는 않는다.

이런 상황때문에 저런 서비스에선 webhook 방식의 API를 제공한다.

제공할 수 있는 상황(이벤트)의 목록을 나열하고, 해당 이벤트에서의 호출 방식, 파라미터 등을 문서를 통해 제공한다.

내가 서비스를 개발하면서 이벤트3에 대한 콜백이 필요하다면 이벤트3의 에 대한 webhook을 개발하고, 등록하면 

webhook을 제공하는 서비스에서 해당 이벤트가 발생할 때 나의 API를 호출해주게 된다.

 

[결론]

Webhook방식으로 연동하기 위해 간단히 조사한 내용을 정리했다.

소규모 서비스나 커스텀을 많이 하는 서비스라면 기존 API호출 방식과 큰 차이는 없다고 생각한다.

 

하지만 패키지로 제품을 만들거나 불특정 다수를 상대해야 하는 서비스를 설계할 때

Webhook 방식의 API로 설계해두면 

소스의 수정 없이 다른 서비스와 연동이 간편할 것 같다.

 

(다르게 말하면 우리는 수정하지 않을테니 다른 서비스에 수정을 강요하는 느낌이다..)

 

끝.

반응형