깃훅(GitHook)과 슬랙 훅(Slack Hook)과 같이, 웹 훅은 웹 개발에서 사용되는 많은 도구와 서비스에 의해 널리 활용되고 있습니다. 깃훅은 깃(Git) 저장소에서 발생하는 이벤트를 감지하고, 해당 이벤트에 대한 알림이나 작업을 수행할 수 있게 해줍니다. 이를 통해 개발자들은 코드 변경 사항이나 프로젝트의 상태 변화에 대한 실시간 알림을 받을 수 있으며, 자동화된 작업을 트리거할 수 있습니다.
그리고 슬랙 훅은 업무 협업 플랫폼인 슬랙(Slack)과 통합되어, 웹 훅을 통해 슬랙 채널로 알림이나 데이터를 전송할 수 있습니다. 예를 들어, 웹 애플리케이션의 오류 로그를 슬랙 채널로 전송하여 팀원들이 신속하게 대응할 수 있게 할 수 있습니다. 또한, 업무 자동화 측면에서 슬랙 훅은 특정 이벤트에 반응하여 워크플로우를 자동으로 시작하거나 업무 통지를 슬랙으로 보낼 수 있는 강력한 기능을 제공합니다.
웹 훅은 다양한 분야에서 업무 자동화를 실현하는 데에 큰 도움을 주고 있습니다. 개발자들은 CI/CD 파이프라인을 구축하고, 서비스들 간의 데이터 통신을 간소화하며, 이벤트 기반 시스템을 구현하는 등 다양한 방식으로 웹 훅을 활용할 수 있습니다. 이를 통해 작업 흐름을 자동화하고 효율성을 극대화할 수 있습니다.
이번 포스팅에서는 이러한 웹 훅이 무엇인지 웹훅의 개념에 대해서 알아보려고 합니다.
웹 훅은 두 개의 API 간의 가벼운 이벤트 중심 통신을 허용하는 HTTP 기반 콜백 함수입니다.
- 출처 : What is a webhook? - 레드햇 블로그 -
레드햇 블로그에서 제시된 웹 훅의 정의는 웹 훅의 기능과 특징을 함축적으로 잘 설명하고 있습니다. 위 문장의 의미를 하나씩 나눠서 해석해보면 이렇습니다.
일반적으로 API는 클라이언트와 서버 간의 통신을 위해 사용됩니다. 하지만 웹 훅은 API와 API 간의 통신도 가능하도록 해줍니다. 이는 한 API에서 이벤트가 발생하면, 해당 이벤트에 대한 정보를 다른 API로 전송하여 통신할 수 있도록 합니다.
웹 훅은 이벤트 발생 시 특정 API에 HTTP 요청을 보내는 방식으로 동작합니다. 즉, 이벤트가 발생할 때 마다 통신을 수행할 수 있습니다. ‘이벤트 중심 통신을 허용하는’이라는 말은 그 핵심 개념을 담고 있습니다.
웹 훅은 HTTP 프로토콜을 기반으로 동작하는 것이 특징입니다. 웹 훅은 이벤트가 발생했을 때 해당 이벤트에 대한 정보를 전달하기 위해 HTTP를 사용합니다. 즉, 이벤트 발생 시 웹 훅은 HTTP 요청을 생성하고, 해당 요청을 수신하는 API나 서버로 전송합니다.
웹 훅을 ‘콜백 함수’라고 말할 수 있는 이유는 웹 훅이 이벤트가 발생했을 때 다른 API에게 알림을 주는 동작 방식을 가지기 때문입니다. 이때, 웹 훅은 이벤트에 대한 응답으로 동작하는 콜백 함수 역할을 수행합니다.
참고 : 콜백 함수는 다른 함수에 인자로 전달되는 함수로서, 특정 이벤트가 발생했을 때 호출되는 함수입니다.
한 마디로 웹 훅은 일종의 “알림 메커니즘”으로, 이벤트 기반 시스템에서 사용됩니다. 다시 말해 애플리케이션에서 발생하는 이벤트를 다른 애플리케이션으로 알리는 기술이라고 할 수 있습니다. 웹 훅을 사용하면 애플리케이션은 이벤트 발생 시 웹 훅을 통해 사전 등록된 URL로 HTTP 요청을 보내고, 이를 수신한 시스템은 요청을 처리하고 응답을 반환합니다. 이를 통해 웹 애플리케이션은 외부 시스템과 실시간으로 통신하고 데이터를 공유할 수 있습니다.
클라이언트-서버 모델은 클라이언트가 서버에 요청을 보내고, 서버는 그 요청을 처리하고 응답을 반환하는 방식입니다. 클라이언트는 서버에 직접적으로 요청을 보내는 주체이며, 서버는 요청을 처리하고 응답을 반환하는 역할을 합니다. 이는 동기적인 방식으로 작동하며, 클라이언트가 직접 요청을 보내야만 서버가 응답을 할 수 있습니다.
반면에 웹 훅은 비동기적인 방식으로 작동합니다. 웹 애플리케이션은 이벤트가 발생하면 웹 훅을 통해 외부 시스템에 알림을 보내고, 외부 시스템은 독립적으로 해당 요청을 처리하고 응답을 반환합니다. 웹 애플리케이션과 외부 시스템은 직접적인 요청-응답 관계가 아니라, 이벤트에 의해 연결되어 있습니다. 이를 통해 웹 애플리케이션은 실시간으로 다른 시스템과 데이터를 공유하고 연동할 수 있습니다.
정리하면 다음과 같습니다:
클라이언트가 서버에 요청을 보내고, 서버는 해당 요청을 처리하여 응답을 반환하는 요청-응답 방식입니다. 이는 동기적인 방식으로 작동하며, 클라이언트는 서버의 응답을 기다립니다.
웹 훅은 이벤트 기반으로 동작하며, 특정 이벤트 발생 시 미리 등록된 URL로 HTTP 요청을 보내는 비동기적인 방식입니다. 웹 훅은 요청을 보낸 후 응답을 기다리지 않고 다음 동작으로 넘어갑니다.
참고 : 통신 프로토콜이 다른 것은 아닙니다. 통신 프로토콜은 웹 훅 또한 HTTP 프로토콜 기반입니다.
주로 사용자의 요청에 의해 동작합니다. 사용자가 웹 페이지를 요청하면 클라이언트가 서버에 해당 요청을 보내고, 서버는 그에 대한 응답을 반환합니다.
특정 이벤트의 발생을 트리거로 동작합니다. 이벤트가 발생하면 웹 훅 발신자가 사전에 설정된 URL로 HTTP 요청을 보내어 이벤트를 알립니다.
사용자와 서버 간의 상호작용은 주로 사용자의 액션에 의해 주도됩니다. 사용자가 요청을 보내고, 서버는 그에 대한 응답을 반환하여 사용자와 상호작용합니다.
웹 훅은 이벤트 기반으로 동작하며, 사용자의 명시적인 요청이 아닌 이벤트에 의해 트리거됩니다. 이벤트가 발생하면 웹 훅 발신자가 요청을 보내고, 웹 훅 수신자는 비동기적으로 이 요청을 처리합니다.
다시 위 내용을 요약하자면, 클라이언트-서버 모델은 사용자와 서버 간의 동기적인 요청-응답 패턴을 따르며 사용자의 액션에 의해 상호작용합니다. 반면에 웹 훅은 이벤트 기반으로 동작하여 비동기적으로 요청을 보내고 이벤트에 대한 알림을 받으며, 상호작용이 사용자의 명시적인 요청이 아닌 이벤트에 의해 트리거됩니다.
이번 포스팅에서는 웹 훅의 개념에 대해서 알아봤습니다. 이 글이 깃이나 슬랙 또는 여러 애플리케이션에서 웹 훅을 사용하면서 구체적으로 웹 훅이 무엇인지 궁금해 하셨던 분들께 도움이 되었기를 바랍니다. 만약 제가 놓친 부분이 있거나 잘못된 부분이 있다면 댓글로 남겨주세요 :)
후킹(Hooking)이란? (11) | 2023.05.13 |
---|