반응형
💡 “결제 완료되면 바로 알림 오던데, 그건 어떻게 되는 거야?”
우리가 자주 사용하는 서비스들:
- 카카오페이 결제 완료 → 우리 서버로 알림 도착
- 깃허브에 푸시 → 디스코드에 메시지 자동 전송
“이거 누가 요청한 거지? 우리가 요청한 것도 아닌데 자동으로 알림이 와요!”
그 비밀이 바로 Webhook(웹훅)입니다.
오늘은 API와의 차이를 중심으로
Webhook을 알기 쉽게 정리해드릴게요 😊
🌐 API란?
API(Application Programming Interface)는
우리가 서버에 요청해서 데이터를 가져오거나 저장하는 방식입니다.
✅ 우리가 먼저 요청!
예시:
GET /products → 상품 목록 가져오기
POST /orders → 주문 요청
📡 Webhook이란?
Webhook(웹훅)은
상대 서버가 우리 서버에게 먼저 알려주는 시스템입니다.
✅ 상대방이 먼저 요청!
✅ 내 서버는 기다리기만 하면 됨
예시:
- 카카오페이에서 결제 완료됨 → 카카오가 내 서버에 POST 요청
- GitHub에서 코드 변경됨 → GitHub가 내 서버에 POST 요청
🆚 Webhook vs API 비교표
항목 | API | Webhook |
누가 먼저 요청? | 우리가 요청 | 상대방이 우리에게 요청 |
방식 | Pull (우리가 끌어옴) | Push (상대가 밀어줌) |
호출 시점 | 우리가 필요할 때 | 상대가 이벤트 발생 시점 |
예시 | 주문 정보 조회 | 결제 완료 알림 |
구조 | 요청-응답 | 이벤트-콜백 방식 |
사용 예 | 프론트에서 데이터 불러오기 | 실시간 상태 반영 (결제, 배송 등) |
📦 Webhook 흐름 예시
[카카오페이 서버]
↓ (POST)
[우리 서버: /webhook/kakaopay]
→ 요청 본문에 "결제 완료" 정보 담겨 있음
→ 우리 서버는 해당 데이터를 저장/처리
💡 우리 서버는 "Webhook 수신용 엔드포인트"를 만들어두기만 하면 됩니다.
🔐 Webhook 실무 포인트
체크리스트 | 이유 |
인증 방식 확인 | 위조 요청 방지 (secret, signature 등 사용) |
응답은 빠르게 | 상대 서버가 응답 대기 중, 응답 지연 시 재시도 발생 |
요청 기록 로깅 | 디버깅, 보안 확인용 로그 저장 |
상태코드 200 응답 | 성공적으로 수신했다는 의미로 꼭 필요 |
💬 실무에서 자주 쓰는 Webhook 예시
서비스 | Webhook 활용 사례 |
결제 시스템 | 결제 완료, 환불 완료 알림 |
GitHub | 푸시, PR, Merge 이벤트 알림 |
Slack, Discord | 메시지 자동 전송 |
Shopify | 주문 생성, 배송 완료 등 이벤트 발생 시 서버 호출 |
🤔 “Webhook을 꼭 써야 할까?”
✅ Webhook이 유리한 경우:
- 실시간성이 중요할 때 (결제, 주문, 상태 변화)
- 상대방의 이벤트를 자동 반영해야 할 때
❌ 굳이 안 써도 되는 경우:
- 내가 직접 API로 원하는 시점에 요청하면 되는 상황
🧠 정리 한마디!
구분 | API | Webhook |
내가 요청 | ✅ | ❌ |
상대가 요청 | ❌ | ✅ |
방식 | Pull | Push |
용도 | 데이터 조회, 등록 | 이벤트 알림, 실시간 처리 |
“API는 내가 물어보는 것,
Webhook은 상대가 먼저 알려주는 것”
이 차이만 기억하면 OK! 😊
📌 다음 예고: 10편 – "DB에서 Primary Key와 Foreign Key가 뭐가 다른데?"
- PK와 FK, 도대체 왜 중요한지
- 관계형 데이터 설계할 때 헷갈리지 않도록 예제로 정리!
반응형
'개발 공부 > 서버' 카테고리의 다른 글
[서버 기초] 웹개발자를 위한 서버 개념 총정리 요약노트 (0) | 2025.05.16 |
---|---|
[서버 기초] Primary Key와 Foreign Key, 뭐가 다른데? (1) | 2025.05.15 |
[서버 기초] JSON과 Form Data, 뭐가 다른 거야? (1) | 2025.05.13 |
[서버 기초] 환경변수(.env)는 왜 쓰는 거야? (0) | 2025.05.12 |
[서버 기초] Proxy와 Reverse Proxy, 헷갈리는 프록시 개념 쉽게 이해하기! (0) | 2025.05.02 |