[cs] AWS lambda 기반의 Webhook

2025. 8. 7. 20:11·CS 및 기본 개념

Webhook과 API Polling

실시간으로 변경되는 데이터 정보 받아오기

서트 파티 서비스에서 제공하는 API를 사용할 때, 외부 서비스에서 발생하는 이벤트 정보를 받아야 하는 경우가 있다.

 

이러한 상황에서 Webhook을 사용하는 방식과 API Polling을 사용하는 방식이 있다.


API Polling

API Polling은 클라이언트가 서버에 지속적으로 API를 호출하여 이벤트가 발생했는지 확인하는 기술이다.

60~120초마다 요청을 보내는 것이 최적의 주기라고 말하지만, 그만큼 실시간성은 떨어진다.


Webhook

이벤트가 발생하면, 클라이언트의 요청 없이 외부 서비스나 서버에서 지정한 URL로 이벤트를 전달하는 기술이다.

즉, 호출 방식은 API Polling의 역방향이고, 실제로 역방향 API라고도 불린다.

 

동작 방식은 서드 파티 서비스에서 지정한 엔드포이트로 이벤트 데이터를 포함하는 요청을 보내는 구조이다.

서비스에 따라서 다르지만, 200 status code를 받으면 웹훅 작업을 성공처리하는 경우가 많다

Webhook Endpoint

웹훅을 사용하기 위해서는 이벤트가 발생했을 때 해당 데이터를 전달할 목적지가 있어야 한다.

이를 웹훅 엔드포인트라고 부른다.

 

ex. RevenueCat의 Webhook에서는 이벤트 발생 시 이벤트 데이터를 전달해주는 웹훅이 존재한다.

 


 

Webhook + Lambda

Webhook만 사용했을 때의 문제점

웹훅은 이벤트가 발생할 때마다 해당 이벤트 정보를 웹훅 엔드포인트로 전달해준다.

 

그런데 만약 운영중인 서버에서 timeout이나 서버 장애 등의 문제가 발생한다면, 웹훅 이벤트를 정상적으로 수신 및 처리하기 어려울 수 있다.  

따라서 이러한 문제를 해결하기 위해서 고가용성이 보장된 웹훅 엔드포인트 설정이 필요하다.


Webhook + Lambda

위와 같은 문제점을 해결하기 위한 방법 중 하나는 AWS lambda를 웹훅 엔드포인트로 사용하는 것이다.

lambda는 고가용성 컴퓨팅 인프라에서 실행되는 함수이므로 고가용성을 어느정도 보장해주고, DynamoDB와 같은 다른 서비스와 연계하기 쉽다.

 

이러한 방법을 통해서 이벤트를 수신하지 못하는 위험도를 줄일 수 있다.

또한 서버리스 환경에서 서비스를 운영한다면 웹훅 엔드포인트를 위한 서버를 따로 관리하지 않아도 되는 것도 장점 중 하나이다.


Webhook + Lambda 동작 방식

간단하기 웹훅 동작 방식은 아래와 같이 나타낼 수 있다.

웹훅으로부터 받은 이벤트 정보를 DB에 저장하는 플로우를 구성해보았다.

  1. 이벤트 발생 및 웹훅 엔드포인트로 이벤트 전달
  2. AWS API Gateway가 해당 이벤트를 수신
  3. API Gateway는 해당 이벤트를 Lambda 함수에 전달
  4. Lambda 함수 내에서 해당 이벤트 데이터 처리 후 DB에 저장

이러한 프로세스는 AWS Console이라는 시각적인 방식을 통해서 쉽게 설계가 가능하다.

 


마무리

이번에는 웹훅과 웹훅을 적절하게 사용하기 위한 방법을 알아보았다.

 

웹훅은 이벤트를 실시간으로 받을 수 있는 강력한 도구이고, AWS Lambda와의 연계를 통해서 이벤트 데이터 관리의 안정성을 향상시킬 수 있다.

하지만, 매우 많은 이벤트가 발생하는 상황에서 위와 같은 구조를 사용하는 것은 클라우드 서비스 비용 측면에서 부담이 될 수 있다.

 

이처럼 웹훅이 HTTP Polling보다 항상 좋은 것은 아닐 것이다.

실시간성이 중요하다면 웹훅이 좋겠지만, 간헐적 갱신으로 충분한 시스템이라면 간격을 충분히 넓힌 HTTP Polling이 더 좋은 방법일 수 있다.

 

따라서 서비스의 특성에 따라서 적절한 기술을 선택하는 것이 중요하다.

'CS 및 기본 개념' 카테고리의 다른 글

[cs] Cache Control 헤더  (4) 2025.08.13
[ Java 공식문서 ] Liveness와 Guarded Block  (6) 2025.08.11
[ Java 공식문서 ] Java 동시성 프로그래밍 2 : Synchronized  (4) 2025.08.06
[ Java 공식문서 ] Java 동시성 프로그래밍 1 : Thread  (3) 2025.08.04
[cs] HTTP 버전별 특징과 차이점  (4) 2025.07.31
'CS 및 기본 개념' 카테고리의 다른 글
  • [cs] Cache Control 헤더
  • [ Java 공식문서 ] Liveness와 Guarded Block
  • [ Java 공식문서 ] Java 동시성 프로그래밍 2 : Synchronized
  • [ Java 공식문서 ] Java 동시성 프로그래밍 1 : Thread
코드래곤
코드래곤
코드래곤 님의 블로그 입니다.
  • 코드래곤
    코드래곤 님의 블로그
    코드래곤
  • 전체
    오늘
    어제
    • 분류 전체보기 (61)
      • 알고리즘 (3)
        • 그리디 (1)
        • 그래프 (2)
      • 시스템 설계 (6)
      • CS 및 기본 개념 (17)
      • Docker (5)
      • Spring (23)
        • 백준 서비스 구현하기 (1)
        • 기초 개념 (14)
        • MSA (2)
        • JPA (1)
      • Dart (3)
      • Flutter (1)
      • Kubernetes (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
코드래곤
[cs] AWS lambda 기반의 Webhook
상단으로

티스토리툴바