웹훅과 Asynchronous API 패턴 - low-hill/Knowledge GitHub Wiki

웹훅

1. 개요

  • 웹훅과 Asynchronous API 패턴은 시스템의 다양한 구성 요소 간 실시간 통신(real-time communication)을 가능 합니다.
  • 이벤트나 변화에 즉각적인 반응이 필요한 애플리케이션에서 중요한 역할을 수행합니다.

2. 웹훅 이해하기

  • 웹훅은 사용자 정의 HTTP 콜백 메커니즘입니다. 이는 한 시스템이 다른 시스템에 이벤트를 알리는 간단하고 효율적인 방법을 제공합니다.

3. 웹훅의 장점

  • 실시간 정보 푸시: 기존의 주기적 폴링 방식과 달리, 웹훅은 변경사항을 즉시 전달합니다.
  • 리소스 효율성: 불필요한 API 호출을 줄여 시스템 리소스를 절약합니다.
  • 즉각적인 반응: 중요한 이벤트에 대해 실시간으로 대응할 수 있습니다.

4. 실제 애플리케이션에서의 웹훅 활용:

a) 구독 서비스:

  • 뉴스레터를 구독 시, 구독서비스는 웹훅으로 다음과 같은 작업을 다른 시스템에 알림
    • 사용자 선호도 업데이트
    • 환영 이메일 발송
    • 구독 데이터 로깅

b) 애플리케이션 통합:

  • 다양한 서비스 간 실시간 통합에 활용되고, 다음과 같은 즉각적인 알림에 유용:
    • 새로운 주문
    • 사용자 가입
    • 시스템 경고

c) Payment Gateways:

  • 전자결제 대행사는 웹훅을 사용하여 판매가에게 결제거래에 대해 알림:
    • 주문 상태 업데이트
    • 배송 프로세스 트리거
    • 재고 관리

5. 웹훅의 작동 방식

  1. 이벤트 발생
  • 이벤트 발생 시 웹훅을 트러거합니다.
  • 이벤트 예시: 새로운 사용자 가입, 파일 업데이트 등
  1. HTTP POST Request
  • 이벤트 발생 시스템이 미리 등록된 수신 시스템의 웹훅 URL로 HTTP POST 요청을 보냅니다.
  1. 페이로드 전달
  • 요청에 이벤트 관련 정보를 담은 페이로드가 전달됩니다.
  1. 이벤트 처리
  • 수신 시스템이 페이로드 정보를 분석하여 이벤트를 처리합니다.
  • 처리 예시:
    • 데이터베이스 업데이트
    • 알림 발송
    • 추가 작업 트리거

Asynchronous API

1. 개요

비동기 API는 비동기 작업을 처리하기 위한 일반화된 솔루션입니다. 비동기 API를 활용하면 효율적이고 확장 가능한 시스템을 구축할 수 있습니다. 사용자에게 끊김 없는 경험을 제공하면서도 복잡한 작업을 처리할 수 있어, 애플리케이션 개발에 필수적입니다.

2. 비동기 API의 핵심 개념

  • 작업 독립성: 시스템이 작업을 시작한 후 완료를 기다리지 않고 다음 작업 수행
  • 유연성: 다양한 비동기 작업에 적용 가능한 범용성

3. 장점

  • 시스템 효율성 향상: 작업을 시작한 후 작업의 완료를 기다리지 않고 다른 작업 진행
  • 리소스 최적화: 긴 처리 시간이 필요한 작업이나 외부 의존성 있는 작업의 효율적 관리

4. 비동기 API의 실제 활용 사례

a) 장시간 실행 작업 처리

  • 적용 분야: 이미지 처리, 비디오 인코딩, 복잡한 계산 등 시간이 오래 걸리는 작업에 적합
  • 이점:
    • 클라이언트가 작업 완료를 기다리며 블로킹되는 상황 방지
    • 사용자 경험 개선 - 긴 작업 중에도 다른 기능 사용 가능
      

b) 확장성 높은 시스템 구축

  • 특징: 다수의 비동기 요청 동시 처리
  • 이점: 리소스 효율적 사용 및 시스템 응답성 향상

c) 마이크로서비스 아키텍처 지원

  • 작동 방식: 한 마이크로서비스가 다른 서비스의 비동기 작업을 트리거하고 즉시 다음 작업 수행
  • 구조적 이점:
    • 서비스 간 느슨한 결합 유지
    • 모듈성과 독립성 증진으로 유지보수 용이

d) 실시간 알림 구현

  • 채팅 애플리케이션에서 메시지 송수신에 활용
  • 이점: 지속적인 폴링 없이 실시간 데이터 업데이트 가능

결론

웹훅과 비동기 API는 서비스 간 실시간 통신을 위한 핵심 기술 입니다.

웹훅 (Webhook)

이벤트 드리븐 아키텍처에 적합 푸시 기반으로 실시간 이벤트 처리 가능

비동기 API

장기 실행 작업 및 외부 서비스 연동에 유용 구현 방식: Promise, async/await, 콜백 함수 이 두 패턴을 적절히 활용하면 높은 처리량과 낮은 지연 시간을 가진 시스템 구축이 가능합니다.


웹훅과 Asynchronous API 패턴을 Spring Boot로 구현한 데모소스입니다. 웹훅 이벤트 처리와 비동기 이메일 알림 전송 기능을 포함합니다.


Reference