Graphically illustrated browser windows, smart phones, and computers, all connecting via an API interface
바로 가기

웹후크란?

URL 복사

웹후크는 2개의 애플리케이션 프로그래밍 인터페이스(API) 간에 경량화 이벤트 기반 통신을 지원하는 HTTP 기반 콜백 기능입니다. 웹후크는 다양한 웹 애플리케이션이 다른 애플리케이션에서 소량의 데이터를 수신하는 데 사용하지만, GitOps 환경에서 자동화 워크플로우를 트리거하는 데 사용할 수도 있습니다.

웹후크는 이벤트 소스를 자동화 솔루션에 연결할 수 있기 때문에 이벤트 기반 자동화를 시작하여 지정된 이벤트가 발생할 때 IT 작업을 수행하는 한 가지 방법입니다.

API란?

API는 애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트입니다. API 간 통신은 때때로 정보 사용자와 정보 제공자 간의 계약으로 지칭되며 소비자에게 필요한 콘텐츠(호출)와 생산자에게 필요한 콘텐츠(응답)를 구성합니다. 이러한 관계는 서버 애플리케이션을 호출하는 클라이언트 애플리케이션이라고도 하지만 이러한 역할은 특정 상황에서 어떤 애플리케이션이 데이터를 요청하는지에 따라 뒤바뀔 수 있습니다.  

웹 API는 일반적으로 HTTP를 사용해 다른 애플리케이션으로부터 데이터를 요청하며 일반적으로 XML 또는 JSON 파일 형식인 응답 메시지의 구조를 정의합니다. 다른 애플리케이션이 쉽게 조작할 수 있게 데이터를 표시하므로 XML과 JSON 둘 다 자주 사용됩니다. 

클라이언트 API는 서버 API로부터 데이터를 요청할 때 특정 이벤트가 발생했는지, 즉 서버의 데이터가 클라이언트에 유용하게 변경되었는지 확인하기 위해 호출합니다. 이 프로세스(폴링이라고 함) 중에 클라이언트는 서버의 API가 관련 데이터(페이로드라 부르기도 함)를 전송할 때까지 규칙적인 간격으로 HTTP 요청을 전송합니다. 

클라이언트 애플리케이션은 서버 애플리케이션의 상태를 모르기 때문에 업데이트를 위해 서버의 API를 폴링(특정 이벤트가 발생할 때까지 반복적으로 호출)하지만 서버는 해당 정보가 제공되면 요청된 데이터만 전송합니다. 클라이언트 애플리케이션은 관련 이벤트가 발생할 때까지 계속해서 업데이트를 요청하면서 대기해야 합니다.

웹후크는 어떤 점이 다를까요?

웹후크를 설정하기 위해 클라이언트는 서버 API에 고유한 URL을 부여하고 알고자 하는 이벤트를 지정합니다. 웹후크가 설정되면 클라이언트는 더 이상 서버를 폴링할 필요가 없습니다. 지정된 이벤트가 발생하면 서버는 클라이언트의 웹후크 URL에 관련 페이로드를 자동으로 전송합니다. 

웹후크는 통신의 책임을 클라이언트가 아닌 서버에 부과하므로 종종 리버스 API 또는 푸시 API라고 불립니다. 서버가 응답할 때까지 데이터를 요청하는 HTTP 요청을 전송하는 클라이언트 대신에 서버는 데이터가 제공되자마자 단일 HTTP POST 요청을 클라이언트에 전송합니다. 웹후크는 리버스 API, 푸시 API라는 별칭으로 불리긴 하지만, 실제로 API는 아니며 서로 연동됩니다. 웹후크를 사용하려면 애플리케이션에 API가 있어야 합니다. 

웹후크라는 이름은 HTTP 기반 통신을 가리키는 과 애플리케이션이 관심 있는 호출이나 기타 이벤트를 가로챌 수 있게 해주는 후킹 프로그래밍 기능을 조합한 것입니다. 웹후크는 서버 애플리케이션에서 발생하는 이벤트를 후킹하며 서버가 웹을 통해 클라이언트에 페이로드를 전송하도록 유도합니다. 제프 린지(Jeff Lindsay)는 2007년 블로그 포스트 '웹에 혁신을 가져오는 웹후크'를 통해 이 개념의 대중화에 일조했습니다.

IT 팀은 웹후크를 통해 통신하는 애플리케이션을 보호하기 위해 다양한 방법을 사용합니다. 대부분의 웹후크 지원 애플리케이션은 페이로드의 요청 헤더에 보안 키를 추가하므로 클라이언트가 서버의 Identity를 확인할 수 있습니다. 웹후크는 페이로드가 전송되기 전에 클라이언트와 서버를 모두 검증하는 mTLS(mutual Transport Layer Security) 인증으로 보호되는 경우가 많습니다. 또한 전송된 데이터가 비공개로 유지되도록 클라이언트 애플리케이션이 웹후크 URL에 SSL 암호화를 사용하는 것이 일반적입니다.

웹후크의 특징은 다음과 같습니다. 

  • 폴링 불필요. 따라서 클라이언트 애플리케이션에 소요되는 리소스가 절감됩니다. 
  • 빠른 설정. 애플리케이션이 웹후크를 지원하는 경우 서버 애플리케이션의 사용자 인터페이스를 통해 웹후크를 손쉽게 설정할 수 있습니다. 바로 여기에서 클라이언트는 애플리케이션의 웹후크 URL을 입력하고 몇 가지 기본적인 매개 변수(예: 관심 있는 이벤트)를 설정합니다.   
  • 데이터 전송 자동화. 지정된 이벤트가 서버 애플리케이션에 발생하자마자 페이로드가 전송됩니다. 이러한 교환은 이벤트에 의해 시작되므로 데이터가 서버에서 클라이언트로 전송되는 속도만큼 빠르게(모든 데이터 전송과 같이 실시간으로) 발생합니다.
  • 경량화된 특정 페이로드에 유용. 웹후크는 서버에 의존해 전송할 데이터의 양을 결정하여, 클라이언트가 페이로드를 해석하고 생산적으로 사용하도록 위임합니다. 클라이언트는 정확한 데이터 전송 시점 또는 규모를 제어하지 않으므로 웹후크는 종종 알림의 형태로 2개의 엔드포인트 사이에서 적은 양의 정보를 처리합니다.

웹후크는 두 애플리케이션 간 통신을 간소화하는 데 가장 흔히 사용되지만 코드형 인프라(IaC) 워크플로우를 자동화하고 GitOps 사례를 지원하는 데도 사용될 수 있습니다.

코드형 인프라(IaC)란? 

코드형 인프라(IaC)는 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝하는 것을 말합니다. 버전 제어는 IaC의 중요한 부분입니다. 다른 소프트웨어 소스 코드 파일과 마찬가지로 구성 파일도 소스 제어가 필요합니다. 코드로 인프라를 배포한다는 것은 인프라를 모듈식 구성 요소로 분할하고 자동화를 통해 다양한 방식으로 결합할 수 있다는 뜻이기도 합니다.

IaC로 인프라 프로비저닝을 자동화하면 애플리케이션을 개발하거나 배포할 때마다 개발자가 직접 서버, 운영 체제, 스토리지, 기타 인프라 구성 요소를 수동으로 프로비저닝하고 관리할 필요가 없어집니다. 인프라 코드화는 프로비저닝을 위해 따라야 할 템플릿을 제공합니다. 수작업으로 할 수도 있지만 이 프로세스는 Red Hat® Ansible® Automation Platform과 같이 엔터프라이즈급의 원하는 상태 엔진으로 자동화할 수 있습니다.

GitOps란?

종종 IaC가 진화한 형태로 간주되는 GitOps는 제어 시스템의 오픈소스 버전인 Git를 사용해 인프라와 애플리케이션 구성을 관리하는 전략적 접근 방식입니다. 개발자는 GitOps 사례에 따라 Git를 선언적 인프라와 애플리케이션을 위한 단일 정보 소스로 사용하며, Git 풀 요청을 사용해 인프라 프로비저닝과 배포를 자동으로 관리합니다. Git 리포지토리에는 시스템의 전체 상태가 포함되어 있어 변경 기록을 확인하고 감사할 수 있습니다. 

웹후크는 어떤 상황에서 유용할까요?

웹후크는 Git 중심 배포 파이프라인을 구현하고 관리하는 데 필요한 단계를 줄여줍니다. 또한 웹후크를 사용해 전체 IaC 워크플로우를 자동으로 시작할 수 있습니다. 정보 소스가 Git 리포지토리인 GitOps 환경에서는 웹후크가 두 애플리케이션 사이에서 하는 역할을 그대로 수행합니다. 즉, 지정된 이벤트에 의해 트리거되면 한 API가 다른 API로 페이로드를 전송합니다. 단, 웹후크를 트리거하는 이벤트의 유형과 수신자가 페이로드로 수행하는 작업에는 차이가 있습니다.

이러한 맥락에서 Git 리포지토리는 서버 애플리케이션의 역할을 수행하는 반면, 인프라의 상태를 관리하는 원하는 상태 엔진은 클라이언트 애플리케이션의 역할을 합니다. 웹후크를 사용하면 Git 리포지토리가 변경될 때마다 원하는 상태 엔진에 알릴 수 있습니다. 일부 코드가 업데이트되어 리포지토리로 푸시되면 이 이벤트가 웹후크를 트리거합니다. 그러면 리포지토리는 원하는 상태 엔진의 웹후크 주소로 페이로드를 자동 전송하여 코드가 변경되었음을 알립니다.

원하는 상태 엔진에서 자동화를 지원하는 경우 이러한 웹후크는 IaC 워크플로우를 시작하여 코드 변경을 자동화된 작업으로 전환할 수도 있습니다. 예를 들어, 시스템 관리자는 웹후크 페이로드를 수신할 때마다 실행되는 자동화를 설정하여 관리형 호스트에서 새 코드 변경 사항을 자동으로 적용하고 기본 상태로 복원할 수 있습니다. 웹후크를 사용하여 자동화를 트리거하는 이 방법은 이벤트 기반 자동화라는 프로세스를 활성화하여 사람이 개입하지 않고 기타 IT 작업을 수행하도록 확장할 수 있습니다.

유일한 차이점은 정보 소스로, 원하는 상태 엔진을 Git 리포지토리에 연결하기 위해 사람이 코드 업데이트를 푸시해야 하는 대신, 웹후크를 사용하면 특정 이벤트에 대한 소스를 모니터링하는 제3사 툴에 연결할 수 있다는 점입니다. 이러한 이벤트 소스에서 대상 이벤트를 감지하고 웹후크를 실행하면 IT 직원이 버튼을 누를 필요 없이 페이로드에서 하루 중 언제든지 즉시 이벤트를 해결하는 자동화 작업을 시작할 수 있습니다.

이벤트 기반 자동화는 IT 환경의 변화하는 조건에 자동으로 대응하여 문제를 더 빠르게 해결하고 일상적이고 반복적인 태스크를 줄이는 프로세스입니다. 이벤트 기반 자동화를 사용하는 IT 팀은 하드웨어 문제, 분산 서비스 거부(DDoS) 공격, 메모리 부족 또는 애플리케이션 오류와 같은 모든 이벤트에 대한 대응을 체계화하여 이벤트 발생 시 필요한 작업이 자동으로 실행되도록 할 수 있습니다.

이벤트 기반 솔루션은 제3사 툴이나 플러그인(예: ServiceNow, Kafka, Prometheus, Sensu, Dynatrace, Appdynamics)을 사용하여 이벤트 소스를 모니터링합니다. 소스에서 이벤트를 감지할 때 웹후크에서 적절한 자동 대응을 트리거하도록 웹후크는 이러한 이벤트 소스를 자동화 플랫폼에 연결하는 데 사용할 수 있습니다.

IT 팀은 이벤트 기반 자동화를 단계적으로 도입하여 평균 문제 해결 시간(MTTR)을 단축하고, 아직 사람의 개입이 필요한 기능(예: 티켓 자동 생성)을 수행하고, 완전 자동화된 문제 해결을 위해 점진적으로 노력함으로써 특정 문제가 발생했을 때 자동으로 적절한 작업이 수행되도록 할 수 있습니다.

이벤트 기반 자동화로 IT 운영에 혁신과 복원력을 통합하세요.

Red Hat Ansible Automation Platform은 IT 팀이 전사적 자동화를 생성, 관리, 확장할 수 있도록 설계된 엔드 투 엔드 자동화 플랫폼입니다. 웹후크를 사용하면 GitHub 또는 GitLab과 같은 서비스를 통해 Ansible Automation Platform을 Git 리포지토리와 통합하여 IaC 및 GitOps 사례를 지원할 수 있습니다. 리포지토리 링크가 설정되면 Ansible Automation Platform은 Git 시스템에서 Git 커밋을 포착하고, 이 이벤트를 사용해 자동화 작업을 트리거함으로써 프로젝트를 업데이트하고, 인벤토리를 관리하고, 배포를 수행합니다.

웹후크를 사용하면 소스 제어 시스템에 이벤트가 발생했을 때 자동화를 자동으로 활성화할 수 있습니다. 따라서 변경 사항 발생 시 리포지토리를 모니터링하고 자동화 작업을 시작하기 위한 추가 CI/CD 툴(예: Jenkins)이 필요 없으므로 GitOps 워크플로우가 단순화되고 운영이 간소화됩니다. Ansible Automation Platform은 광범위한 개발 및 배포 툴과 연동되므로 GitOps 워크플로우를 선호하는 툴 및 프로세스에 맞춰 조정할 수 있습니다.

Event-Driven Ansible을 통한 미션 크리티컬 자동화 

Ansible Automation Platform에 포함된 Event-Driven Ansible은 시간이 오래 걸리는 태스크를 자동화하고 모든 IT 도메인에서 상황 변화에 대응하는 데 필요한 이벤트 처리 기능을 제공합니다. Event-Driven Ansible은 IT 환경의 상태에 대한 개별 인텔리전스가 포함된 이벤트를 처리하고, 해당 이벤트에 대한 적절한 대응을 결정한 다음, 이벤트를 처리하거나 해결하기 위한 자동화된 작업을 실행할 수 있습니다.

Event-Driven Ansible은 티켓 향상, 문제 해결, 사용자 관리와 같은 IT 서비스 관리 태스크와 기타 다양한 IT 프로세스를 자동화하는 데 사용할 수 있습니다. 을 통해 이벤트 소스를 해당 작업과 연결하기 때문입니다. Ansible Rulebook은 이벤트 소스를 정의하고 이벤트가 발생할 때 수행할 작업을 조건부 IFTTT(IF This Then That) 명령의 형태로 설명합니다. 설계한 Rulebook을 기반으로 Event-Driven Ansible은 지정된 이벤트를 인식하여 적절한 작업과 일치시키고 자동으로 실행합니다.

전체 지원되는 일반 웹후크를 사용하여 Event-Driven Ansible을 이벤트 소스에 연결할 수 있지만, Event-Driven Ansible은 파트너가 특정 기술을 위해 구축한 소스 플러그인 에코시스템 라이브러리도 제공합니다. 이러한 전체 지원 플러그인을 사용하면 새로운 이벤트가 발생할 때마다 코드 또는 프로그램 웹후크를 작성하지 않고도 이벤트 기반 자동화를 구축할 수 있습니다. 어떤 이벤트에 관심이 있고 어떤 작업을 수행하고 싶은지 확인한 다음 이러한 명령을 Ansible Rulebook에 작성하기만 하면 됩니다. 그러면 모든 이벤트에서 기존의 Ansible Playbook 또는 원하는 자동화 워크플로우를 자동으로 실행할 수 있습니다.

추가 자료

문서

Ansible 기본 사항 학습하기

Ansible은 프로비저닝 및 구성 관리와 같은 IT 프로세스를 자동화합니다. 여기서 소개하는 핵심 개념을 통해 Ansible의 기본 사항을 학습하세요.

문서

비즈니스 프로세스 관리란 무엇일까요?

비즈니스 프로세스 관리(Business Process Management, BPM)는 전략적 비즈니스 목표를 달성하기 위해 엔드 투 엔드 비즈니스 프로세스를 모델링, 분석, 최적화하는 프랙티스입니다.

문서

Red Hat의 자동화를 선택해야 하는 이유

Red Hat Ansible Automation Platform에는 여러 팀에서 자동화를 공유하고 전사적 자동화를 구현하는 데 필요한 모든 툴이 포함되어 있습니다.

자동화에 대한 자세한 내용

제품

다양한 시각으로 고객의 상황을 파악하고 이를 바탕으로 고객의 과제를 분석하여 종합적이고 비용 효율적인 솔루션을 통해 문제를 해결하도록 돕는 전략적인 조언자입니다.

자동화 과정의 어느 단계에 있든지 상관없이 전사적 자동화를 구현할 수 있는 플랫폼입니다.

리소스

교육

무료 교육 과정

Ansible Essentials: Simplicity in Automation Technical Overview

무료 교육 과정

Red Hat Ansible Automation for SAP