Webhook vs API

Jinhwan Kim
4 min readJan 8, 2021

저는 오랜기간동안

어떻게 하면 하고 싶은 것만 하면서 살 수 있을까

라는 질문에 대해서 고민했습니다.

이를 위해서 “영리하게” 일하는 방식을 많이 고민했는데요.

그러다 보니 다양한 툴에서
봇, 혹은 API, 더 정확히는 Webhook을 많이 사용하게 되었습니다.

그렇지만 솔직히 저는 webhook이 뭔지, api랑 무슨 차이인지에 대해서 알지 못하지만 일단은 돌아가는 것을 확인했기 때문에 쓰고 있었습니다만…

어느 순간 궁금증이 생겼습니다.

단순하고 반복적인 업무를 알아서 돌아가게 하기 위해서 봇을 사용하고
그를 위해서 보통 api라는 키워드를 많이 검색했었는데
실제로는 내가 찾던 것은 webhook이었다.

그렇다면 api와 webhook은 어떤 차이가 있는 것일까?

라는 질문이죠.

핵심 요약은 아래와 같습니다.

우리가 지금 애플 주가를 알고 싶다 라고 가정해보겠습니다.

이를 위해서 처음에는

  1. yahoo finance 에 들어가서,
  2. AAPL을 검색 후
  3. 해당 페이지에 접속하여 주가를 확인한다

라는 단계를 떠올리게 될 것입니다.

그러나 이 프로세스는

  • 크롬도 켜야하고,
  • 검색도 해야하고,
  • 마우스를 클릭도 해야하고

아무튼 번거롭습니다.

뿐만 아니라 yahoo finance의 입장에서도

  • 우리는 aapl의 주가만 볼 것인데 다른 정보들을 같이 표기하기 위한 리소스 낭비가 너무 싫습니다.

API

이러한 생각들의 타협점으로 API가 사용된다 라고 저는 생각했습니다.

즉 yahoo와 저 사이의 하나의 약속을 하는거죠.

  • AAPL 주가만 알려달라고 말해줘 그럼 다른 정보 빼고 그거만 줄게
  • 근데 이를 위해서 하나의 약속을 정하자
  • AAPL 주가 알려줘 야후 라는 형식으로 말해줘

엄밀히는 get이니 request니, post니 이러한 기술적인 단어들이 많이 들어가야 하지만 아무튼 제가 이해한 방식대로 표현하면 API는 이렇습니다.

이로 인해서 매번 웹사이트에 방문해서 주가를 확인할 필요없이,
심지어 python을 통해서도 원하는 때에 AAPL 주가를 받아 올 수 있게 되었습니다.

그렇지만 여전히 저는 조금 불편했습니다.

AAPL 주가 알려줘 야후 라는 야후가 지정한 형식을 맞추는게 아니라,
내가 원하는 방법으로 주가 정보를 얻어올 수는 없을까?

이런 생각을 하게 된 겁니다.

Webhook

이러한 생각의 결과물로 webhook을 사용한다 라고 저는 생각했습니다.

webhook의 정의는, user-defined HTTP callbacks 입니다. (참조)

려줘 후가 아니라, 주알야 라고 말을 해도,
더 나아가서 말이 아닌 다른 방식을 통해서도
내가 AAPL의 주가를 원한다는 정보를 전달하는 방법인거죠.

여기서 다른 방식은 특정한 이벤트 가령

  • commit이 생겼거나
  • comment가 달렸거나
  • 버그가 생겼거나
  • 아니면 특정한 시간이 되었거나 (cron)

와 같이 아주 다양하게 적용 될 수 있습니다.

제가 사용하고 있는 툴들은 대부분 이와 같이 webhook 연동을 제공합니다.

Slack
Mattermost
Discord

그 어떤 책에서 본 글인데요.

어떤 A라는 업무에 집중을 하고 있다가,
B라는 업무를 잠깐 진행하게 되면
B자체의 난이도에 관계 없이,
다시 이전만큼 집중하기 위해서는
10분 이상의 시간이 필요하다고 합니다.
(멀티태스킹이 다 뻥이다 라고 하더군요)

이러한 과정들을 통해서 저는 조금 더 “영리하게” 일하는 방법을 배운 것 같습니다.

--

--

No responses yet