웹훅과 Asynchronous API 패턴 - low-hill/Knowledge GitHub Wiki
웹훅
1. 개요
- 웹훅과 Asynchronous API 패턴은 시스템의 다양한 구성 요소 간 실시간 통신(real-time communication)을 가능 합니다.
- 이벤트나 변화에 즉각적인 반응이 필요한 애플리케이션에서 중요한 역할을 수행합니다.
2. 웹훅 이해하기
- 웹훅은 사용자 정의 HTTP 콜백 메커니즘입니다. 이는 한 시스템이 다른 시스템에 이벤트를 알리는 간단하고 효율적인 방법을 제공합니다.
3. 웹훅의 장점
- 실시간 정보 푸시: 기존의 주기적 폴링 방식과 달리, 웹훅은 변경사항을 즉시 전달합니다.
- 리소스 효율성: 불필요한 API 호출을 줄여 시스템 리소스를 절약합니다.
- 즉각적인 반응: 중요한 이벤트에 대해 실시간으로 대응할 수 있습니다.
4. 실제 애플리케이션에서의 웹훅 활용:
a) 구독 서비스:
- 뉴스레터를 구독 시, 구독서비스는 웹훅으로 다음과 같은 작업을 다른 시스템에 알림
- 사용자 선호도 업데이트
- 환영 이메일 발송
- 구독 데이터 로깅
b) 애플리케이션 통합:
- 다양한 서비스 간 실시간 통합에 활용되고, 다음과 같은 즉각적인 알림에 유용:
- 새로운 주문
- 사용자 가입
- 시스템 경고
c) Payment Gateways:
- 전자결제 대행사는 웹훅을 사용하여 판매가에게 결제거래에 대해 알림:
- 주문 상태 업데이트
- 배송 프로세스 트리거
- 재고 관리
5. 웹훅의 작동 방식
- 이벤트 발생
- 이벤트 발생 시 웹훅을 트러거합니다.
- 이벤트 예시: 새로운 사용자 가입, 파일 업데이트 등
- HTTP POST Request
- 이벤트 발생 시스템이 미리 등록된 수신 시스템의 웹훅 URL로 HTTP POST 요청을 보냅니다.
- 페이로드 전달
- 요청에 이벤트 관련 정보를 담은 페이로드가 전달됩니다.
- 이벤트 처리
- 수신 시스템이 페이로드 정보를 분석하여 이벤트를 처리합니다.
- 처리 예시:
- 데이터베이스 업데이트
- 알림 발송
- 추가 작업 트리거
Asynchronous API
1. 개요
비동기 API는 비동기 작업을 처리하기 위한 일반화된 솔루션입니다. 비동기 API를 활용하면 효율적이고 확장 가능한 시스템을 구축할 수 있습니다. 사용자에게 끊김 없는 경험을 제공하면서도 복잡한 작업을 처리할 수 있어, 애플리케이션 개발에 필수적입니다.
2. 비동기 API의 핵심 개념
- 작업 독립성: 시스템이 작업을 시작한 후 완료를 기다리지 않고 다음 작업 수행
- 유연성: 다양한 비동기 작업에 적용 가능한 범용성
3. 장점
- 시스템 효율성 향상: 작업을 시작한 후 작업의 완료를 기다리지 않고 다른 작업 진행
- 리소스 최적화: 긴 처리 시간이 필요한 작업이나 외부 의존성 있는 작업의 효율적 관리
4. 비동기 API의 실제 활용 사례
a) 장시간 실행 작업 처리
- 적용 분야: 이미지 처리, 비디오 인코딩, 복잡한 계산 등 시간이 오래 걸리는 작업에 적합
- 이점:
- 클라이언트가 작업 완료를 기다리며 블로킹되는 상황 방지
- 사용자 경험 개선 - 긴 작업 중에도 다른 기능 사용 가능
b) 확장성 높은 시스템 구축
- 특징: 다수의 비동기 요청 동시 처리
- 이점: 리소스 효율적 사용 및 시스템 응답성 향상
c) 마이크로서비스 아키텍처 지원
- 작동 방식: 한 마이크로서비스가 다른 서비스의 비동기 작업을 트리거하고 즉시 다음 작업 수행
- 구조적 이점:
- 서비스 간 느슨한 결합 유지
- 모듈성과 독립성 증진으로 유지보수 용이
d) 실시간 알림 구현
- 채팅 애플리케이션에서 메시지 송수신에 활용
- 이점: 지속적인 폴링 없이 실시간 데이터 업데이트 가능
결론
웹훅과 비동기 API는 서비스 간 실시간 통신을 위한 핵심 기술 입니다.
웹훅 (Webhook)
이벤트 드리븐 아키텍처에 적합 푸시 기반으로 실시간 이벤트 처리 가능
비동기 API
장기 실행 작업 및 외부 서비스 연동에 유용 구현 방식: Promise, async/await, 콜백 함수 이 두 패턴을 적절히 활용하면 높은 처리량과 낮은 지연 시간을 가진 시스템 구축이 가능합니다.
웹훅과 Asynchronous API 패턴을 Spring Boot로 구현한 데모소스입니다. 웹훅 이벤트 처리와 비동기 이메일 알림 전송 기능을 포함합니다.