본문 바로가기
PM으로 성장하기/개발 공부

Webhook, Push API, Callback API

by 고양이 고씨 2024. 5. 9.

어떤 방식으로 통신해야할지 이야기를 하면서 위 세가지 개념이 나왔다.

물론 각기 다른 프로젝트에서 나온 이야기이지만 비개발자인 내 입장에서는 그게 그거인것 같아 Chapt GPT 에게 물어봤다.

역시 친절하게 잘 알려준다..!

 

---------------------------

 

이벤트(event)

이벤트 기반 시스템이란 특정 상황이나 조건이 발생했을 때 시스템이 이를 감지하고 이에 대응하는 방식을 말하며, 이벤트는 다음과 같은 상황이나 조건을 이야기 함:

  • 사용자의 동작: 사용자가 애플리케이션에서 버튼을 클릭하거나 특정 입력을 수행하는 등의 동작을 취할 때
  • 외부 시스템의 상태 변화: 외부 시스템이나 서비스의 상태가 변경될 때, 이를 감지하고 그에 따라 행동하는 것
  • 내부 프로세스의 상태 변화: 내부 프로세스나 데이터의 상태가 변경될 때, 이를 감지하여 이에 대응하는 것

 

Push API

: Push API는 서버에서 클라이언트로 데이터를 자동으로 보내는 API

 - 클라이언트가 서버에 요청을 보내지 않아도 서버는 새로운 데이터나 이벤트를 클라이언트에게 보낼 수 있음

 - 주로 실시간 통신이 필요한 애플리케이션에서 사용 (예: 클라이언트에서 이벤트가 발생 > 발생된 이벤트를 서버로 전송 > 서버는 그 이벤트에 반응하여 데이터를 받아 처리함)

 

 

웹훅(Webhook)

: 웹훅은 이벤트 기반으로 작동하는 HTTP 콜백

- 서버에서 클라이언트로 데이터를 전송하는 것이 아니라, 서버에서 이벤트가 발생할 때마다 HTTP 요청을 보내는 방식

- 클라이언트가 서버에 특정 이벤트가 발생될 때 호출되도록 URL을 등록 > 서버는 이벤트 발생 시 미리 등록된 URL로 HTTP 요청을 보내어 클라이언트에서 알려줌 > 클라이언트는 이 요청을 받아서 처리함 

- 웹훅은 주로 이벤트 기반 시스템에서 사용됨 (예: 서버 측에서 새로운 데이터가 생성되었을 때, 데이터베이스의 업데이트, 외부 API의 이벤트 등)

 

 

Push API 와 웹훅(Webhook)의 차이

: 주요 차이점은 누가 호출하는지에 있음

- Push API는 서버가 클라이언트에게 데이터를 직접 전송하는 방식으로, 클라이언트가 서버에 요청을 보내지 않아도 새로운 데이터나 이벤트를 클라이언트에게 보내는 것

- 웹훅은 클라이언트가 서버에 등록한 URL로 이벤트를 전달하는 방식

 

 

콜백 API

: 비동기적인 상황에서 함수 또는 메서드를 호출한 후에 나중에 호출되는 함수
- 일반적으로 함수나 메서드에 콜백 함수를 인자로 전달하여, 비동기 작업이 완료되었을 때 이 콜백 함수가 호출되도록 함

(예: 클라이언트가 서버에 데이터를 요청 > 서버는 이 요청을 처리하는 동안 클라이언트는 다른 작업 수행 > 서버는 데이터 처리 후 클라이언트가 제공한 콜백 함수를 호출하여 처리한 데이터를 반환하거나 결과를 알림)

- 주로 프로그래밍 인터페이스에서 사용되며, 비동기적인 작업을 처리하고, API 통신 중 발생하는 이벤트에 대한 응답을 다룰 때 유용함

 

 

 

기타 비슷한 개념

  • Pub/Sub (Publish/Subscribe): Pub/Sub은 발행/구독 메커니즘으로, 이벤트 기반 시스템과 관련이 있음. 이벤트를 발행하는 측(발행자)과 해당 이벤트를 구독하는 측(구독자)으로 구성되며 발행자는 이벤트를 발행하고, 해당 이벤트에 관심이 있는 구독자는 해당 이벤트를 구독하여 처리함.
  • 메시징 큐(Messaging Queue): 메시징 큐는 비동기적으로 메시지를 보내고 받는 시스템. 이는 이벤트 기반 시스템과 유사하게 동작할 수 있으며, 이벤트를 메시지로 처리하여 전송하고, 해당 메시지를 수신하여 처리하는 방식으로 동작함.
  • 웹소켓(WebSocket): 웹소켓은 양방향 통신을 제공하는 프로토콜로, 실시간 통신에 사용됨. 클라이언트와 서버 간의 지속적인 연결을 통해 데이터를 전송하고 받을 수 있으며, 이는 이벤트 기반 시스템에서도 활용될 수 있음.

 

*출처

- ChatGPT

 

 

728x90

'PM으로 성장하기 > 개발 공부' 카테고리의 다른 글

웹훅(Webhook)  (0) 2024.03.29
이력관리: 시점이력 / 선분이력  (1) 2024.02.05
Redirect vs. Rewrite  (0) 2024.02.04
인터페이스 구현(AJAX, REST, 인터페이스 검증)  (0) 2023.09.04
연계 모듈 구현  (0) 2023.09.04

댓글