상세 컨텐츠

본문 제목

웹 훅(Webhook)의 개념 살펴보기

Development/Computer Science

by 유후(yufu) 2023. 5. 14. 18:00

본문

반응형

들어가며

깃훅(GitHook)과 슬랙 훅(Slack Hook)과 같이, 웹 훅은 웹 개발에서 사용되는 많은 도구와 서비스에 의해 널리 활용되고 있습니다. 깃훅은 깃(Git) 저장소에서 발생하는 이벤트를 감지하고, 해당 이벤트에 대한 알림이나 작업을 수행할 수 있게 해줍니다. 이를 통해 개발자들은 코드 변경 사항이나 프로젝트의 상태 변화에 대한 실시간 알림을 받을 수 있으며, 자동화된 작업을 트리거할 수 있습니다.

그리고 슬랙 훅은 업무 협업 플랫폼인 슬랙(Slack)과 통합되어, 웹 훅을 통해 슬랙 채널로 알림이나 데이터를 전송할 수 있습니다. 예를 들어, 웹 애플리케이션의 오류 로그를 슬랙 채널로 전송하여 팀원들이 신속하게 대응할 수 있게 할 수 있습니다. 또한, 업무 자동화 측면에서 슬랙 훅은 특정 이벤트에 반응하여 워크플로우를 자동으로 시작하거나 업무 통지를 슬랙으로 보낼 수 있는 강력한 기능을 제공합니다.

웹 훅은 다양한 분야에서 업무 자동화를 실현하는 데에 큰 도움을 주고 있습니다. 개발자들은 CI/CD 파이프라인을 구축하고, 서비스들 간의 데이터 통신을 간소화하며, 이벤트 기반 시스템을 구현하는 등 다양한 방식으로 웹 훅을 활용할 수 있습니다. 이를 통해 작업 흐름을 자동화하고 효율성을 극대화할 수 있습니다.

이번 포스팅에서는 이러한 훅이 무엇인지 웹훅의 개념에 대해서 알아보려고 합니다.

웹 훅이란?

웹 훅은 두 개의 API 간의 가벼운 이벤트 중심 통신을 허용하는 HTTP 기반 콜백 함수입니다.
- 출처 : What is a webhook? - 레드햇 블로그 -

레드햇 블로그에서 제시된 웹 훅의 정의는 웹 훅의 기능과 특징을 함축적으로 잘 설명하고 있습니다. 위 문장의 의미를 하나씩 나눠서 해석해보면 이렇습니다.

🔖 웹 훅은 두 개의 API 간의 통신을 허용하는

일반적으로 API는 클라이언트와 서버 간의 통신을 위해 사용됩니다. 하지만 웹 훅은 API와 API 간의 통신도 가능하도록 해줍니다. 이는 한 API에서 이벤트가 발생하면, 해당 이벤트에 대한 정보를 다른 API로 전송하여 통신할 수 있도록 합니다.

🔖 이벤트 중심 통신을 허용하는

웹 훅은 이벤트 발생 시 특정 API에 HTTP 요청을 보내는 방식으로 동작합니다. 즉, 이벤트가 발생할 때 마다 통신을 수행할 수 있습니다. ‘이벤트 중심 통신을 허용하는’이라는 말은 그 핵심 개념을 담고 있습니다.

🔖 HTTP 기반

웹 훅은 HTTP 프로토콜을 기반으로 동작하는 것이 특징입니다. 웹 훅은 이벤트가 발생했을 때 해당 이벤트에 대한 정보를 전달하기 위해 HTTP를 사용합니다. 즉, 이벤트 발생 시 웹 훅은 HTTP 요청을 생성하고, 해당 요청을 수신하는 API나 서버로 전송합니다.

🔖 콜백 함수

웹 훅을 ‘콜백 함수’라고 말할 수 있는 이유는 웹 훅이 이벤트가 발생했을 때 다른 API에게 알림을 주는 동작 방식을 가지기 때문입니다. 이때, 웹 훅은 이벤트에 대한 응답으로 동작하는 콜백 함수 역할을 수행합니다.

참고 : 콜백 함수는 다른 함수에 인자로 전달되는 함수로서, 특정 이벤트가 발생했을 때 호출되는 함수입니다.

 

정리

한 마디로 웹 훅은 일종의 “알림 메커니즘”으로, 이벤트 기반 시스템에서 사용됩니다. 다시 말해 애플리케이션에서 발생하는 이벤트를 다른 애플리케이션으로 알리는 기술이라고 할 수 있습니다. 웹 훅을 사용하면 애플리케이션은 이벤트 발생 시 웹 훅을 통해 사전 등록된 URL로 HTTP 요청을 보내고, 이를 수신한 시스템은 요청을 처리하고 응답을 반환합니다. 이를 통해 웹 애플리케이션은 외부 시스템과 실시간으로 통신하고 데이터를 공유할 수 있습니다.

 

클라이언트-서버 모델과의 차이점

클라이언트-서버 모델은 클라이언트가 서버에 요청을 보내고, 서버는 그 요청을 처리하고 응답을 반환하는 방식입니다. 클라이언트는 서버에 직접적으로 요청을 보내는 주체이며, 서버는 요청을 처리하고 응답을 반환하는 역할을 합니다. 이는 동기적인 방식으로 작동하며, 클라이언트가 직접 요청을 보내야만 서버가 응답을 할 수 있습니다.

반면에 웹 훅은 비동기적인 방식으로 작동합니다. 웹 애플리케이션은 이벤트가 발생하면 웹 훅을 통해 외부 시스템에 알림을 보내고, 외부 시스템은 독립적으로 해당 요청을 처리하고 응답을 반환합니다. 웹 애플리케이션과 외부 시스템은 직접적인 요청-응답 관계가 아니라, 이벤트에 의해 연결되어 있습니다. 이를 통해 웹 애플리케이션은 실시간으로 다른 시스템과 데이터를 공유하고 연동할 수 있습니다.

정리하면 다음과 같습니다:

1️⃣ 통신 방식

클라이언트-서버 모델

클라이언트가 서버에 요청을 보내고, 서버는 해당 요청을 처리하여 응답을 반환하는 요청-응답 방식입니다. 이는 동기적인 방식으로 작동하며, 클라이언트는 서버의 응답을 기다립니다.

웹 훅

웹 훅은 이벤트 기반으로 동작하며, 특정 이벤트 발생 시 미리 등록된 URL로 HTTP 요청을 보내는 비동기적인 방식입니다. 웹 훅은 요청을 보낸 후 응답을 기다리지 않고 다음 동작으로 넘어갑니다.

참고 : 통신 프로토콜이 다른 것은 아닙니다. 통신 프로토콜은 웹 훅 또한 HTTP 프로토콜 기반입니다.

2️⃣ 트리거 방식

클라이언트-서버 모델

주로 사용자의 요청에 의해 동작합니다. 사용자가 웹 페이지를 요청하면 클라이언트가 서버에 해당 요청을 보내고, 서버는 그에 대한 응답을 반환합니다.

웹 훅

특정 이벤트의 발생을 트리거로 동작합니다. 이벤트가 발생하면 웹 훅 발신자가 사전에 설정된 URL로 HTTP 요청을 보내어 이벤트를 알립니다.

3️⃣ 상호작용 방식

클라이언트-서버 모델

사용자와 서버 간의 상호작용은 주로 사용자의 액션에 의해 주도됩니다. 사용자가 요청을 보내고, 서버는 그에 대한 응답을 반환하여 사용자와 상호작용합니다.

웹 훅

웹 훅은 이벤트 기반으로 동작하며, 사용자의 명시적인 요청이 아닌 이벤트에 의해 트리거됩니다. 이벤트가 발생하면 웹 훅 발신자가 요청을 보내고, 웹 훅 수신자는 비동기적으로 이 요청을 처리합니다.

다시 위 내용을 요약하자면, 클라이언트-서버 모델은 사용자와 서버 간의 동기적인 요청-응답 패턴을 따르며 사용자의 액션에 의해 상호작용합니다. 반면에 웹 훅은 이벤트 기반으로 동작하여 비동기적으로 요청을 보내고 이벤트에 대한 알림을 받으며, 상호작용이 사용자의 명시적인 요청이 아닌 이벤트에 의해 트리거됩니다.

 

마치며

이번 포스팅에서는 훅의 개념에 대해서 알아봤습니다. 글이 깃이나 슬랙 또는 여러 애플리케이션에서 훅을 사용하면서 구체적으로 훅이 무엇인지 궁금해 하셨던 분들께 도움이 되었기를 바랍니다. 만약 제가 놓친 부분이 있거나 잘못된 부분이 있다면 댓글로 남겨주세요 :)

반응형

'Development > Computer Science' 카테고리의 다른 글

후킹(Hooking)이란?  (11) 2023.05.13

관련글 더보기