2025년 3월 31일
이론
조회 : 79|2분 읽기
Webhook 사용사례
🤝 SaaS 간 웹훅 활용과 사이드 프로젝트에서의 적용기
이전 글에서는 웹훅(Webhook)의 개념과 동작 방식에 대해 다뤄봤습니다.
이번 글에서는 실제로 SaaS 서비스들 간에 웹훅이 어떻게 활용되는지,
그리고 제가 직접 웹훅을 사용해봤던 사이드 프로젝트 경험을 함께 공유하려고 합니다.
이번 글에서는 실제로 SaaS 서비스들 간에 웹훅이 어떻게 활용되는지,
그리고 제가 직접 웹훅을 사용해봤던 사이드 프로젝트 경험을 함께 공유하려고 합니다.
🌐 SaaS 통합에서 웹훅이 필요한 이유
다양한 SaaS를 함께 사용하는 환경에서는,
서로 다른 시스템이 실시간으로 반응하거나 동기화되어야 하는 경우가 많습니다.
서로 다른 시스템이 실시간으로 반응하거나 동기화되어야 하는 경우가 많습니다.
예를 들어:
-
Stripe에서 결제가 완료되면,
→ 우리 서버에 알림이 와야 주문 상태를 업데이트할 수 있습니다. -
Notion에서 페이지가 새로 생성되면,
→ Google Sheets나 Slack에 자동으로 반영되면 편리하겠죠?
이처럼, 이벤트 발생 → 자동 알림 → 다른 시스템 반응
이런 흐름이 필요할 때 웹훅은 가장 단순하면서도 강력한 방법입니다.
이런 흐름이 필요할 때 웹훅은 가장 단순하면서도 강력한 방법입니다.
🔁 웹훅 vs 일반 API 호출 정리
| 항목 | 웹훅(Webhook) | API 호출(Server to Server) |
|---|---|---|
| 호출 주체 | 상대방이 우리 서버 호출 | 우리가 상대방 서버 호출 |
| 트리거 시점 | 이벤트 발생 시 자동 | 필요할 때 직접 요청 |
| 용도 | 알림, 트리거 | 데이터 조회/변경 |
| 방식 | 미리 등록된 URL에 POST | 직접 REST API 호출 |
요약하자면:
웹훅은 "무슨 일이 생겼을 때 알려준다",
**API는 "필요한 정보를 내가 가져온다"**는 구조입니다.
🔗 실제 SaaS 연동 사례
| 발신 SaaS | 수신 시스템 | 트리거 이벤트 | 동작 결과 |
|---|---|---|---|
| Stripe | 내 서버 | 결제 완료 | 주문 상태 갱신 |
| GitHub | Slack | PR 생성 | 알림 메시지 전송 |
| Notion | Zapier | 페이지 생성 | Google Sheets에 입력 |
| Shopify | ERP 서버 | 주문 생성 | 재고 자동 동기화 |
| Vercel | Discord | 배포 완료 | 디스코드 알림 전송 |
웹훅은 이처럼 다양한 SaaS에서 자동화를 위한 핵심 연결 고리로 쓰입니다.
📨 웹훅은 받기만 하는 게 아니다 (Slack 예시)
웹훅은 보통 “외부에서 우리 서버로 보내주는 구조”로만 생각하기 쉽지만,
Slack이나 Discord처럼 우리가 웹훅을 이용해 메시지를 보낼 수도 있습니다.
Slack이나 Discord처럼 우리가 웹훅을 이용해 메시지를 보낼 수도 있습니다.
✅ Slack Incoming Webhook 설정
- Incoming Webhooks 설정 페이지 접속
- Slack 채널 선택 → Webhook URL 발급
- 이 URL로 HTTP POST 요청을 보내면, 해당 채널로 메시지가 도착합니다.
✅ 예제 (Node.js)
js1const axios = require('axios'); 2 3const webhookUrl = 'https://hooks.slack.com/services/XXX/YYY/ZZZ'; 4 5axios.post(webhookUrl, { 6 text: '✅ 새로운 유저가 가입했습니다!', 7});
🌱 내 사이드 프로젝트에서의 웹훅 활용 경험 – Planet
제가 개발한 사이드 프로젝트 Planet에서는
사용자가 식물을 등록하고 다이어리를 작성할 수 있으며,
부적절한 콘텐츠는 신고할 수 있도록 기능을 넣었습니다.
사용자가 식물을 등록하고 다이어리를 작성할 수 있으며,
부적절한 콘텐츠는 신고할 수 있도록 기능을 넣었습니다.
그런데 초기에는 신고가 들어와도 운영자인 제가 그걸 전혀 알 수 없었어요.
DB에만 저장될 뿐, 실시간으로 알림을 받을 수단이 없었습니다.
DB에만 저장될 뿐, 실시간으로 알림을 받을 수단이 없었습니다.
“지금 누가 무언가를 신고했는데, 내가 모르면 아무 소용 없잖아?”
그래서 Slack의 Incoming Webhook을 활용해
신고가 접수되면 실시간으로 Slack 채널에 알림을 전송하도록 구현했습니다.
신고가 접수되면 실시간으로 Slack 채널에 알림을 전송하도록 구현했습니다.
⚙️ Slack Webhook 연동 코드 (Spring Boot)
java1@Service 2public class SlackService { 3 4 @Value("${slack.webhook.url}") 5 private String webhookUrl; 6 7 public void sendReport(String contentId, String reason) { 8 String message = String.format( 9 "🚨 신고 접수됨!\n- 콘텐츠 ID: %s\n- 사유: %s", 10 contentId, reason 11 ); 12 13 RestTemplate restTemplate = new RestTemplate(); 14 15 HttpHeaders headers = new HttpHeaders(); 16 headers.setContentType(MediaType.APPLICATION_JSON); 17 18 Map<String, String> payload = Map.of("text", message); 19 HttpEntity<Map<String, String>> entity = new HttpEntity<>(payload, headers); 20 21 restTemplate.postForEntity(webhookUrl, entity, String.class); 22 } 23}
신고 API에서 이 서비스를 호출하기만 하면 끝:
java1@PostMapping("/report") 2public ResponseEntity<?> report(@RequestBody ReportRequest req) { 3 reportService.save(req); 4 slackService.sendReport(req.getContentId(), req.getReason()); 5 return ResponseEntity.ok().build(); 6}
💬 느낀 점
- Slack Webhook은 설정은 간단한데 운영 효율은 극대화되는 경험이었습니다.
- Slack만 열어두면 즉시 신고 상황을 파악할 수 있어, 별도 관리자 페이지가 없어도 문제 없었습니다.
- 사이드 프로젝트에 작은 자동화 하나 붙였을 뿐인데, 운영 체감은 꽤 컸습니다.
- 웹훅은 생각보다 빠르게 구현 가능하고, 효과는 매우 명확했습니다.
✅ 마무리하며 – 웹훅은 작지만 강력한 연결 도구
이 글에서는 SaaS 간 통합에서 웹훅이 어떻게 활용되는지 정리하고,
제가 직접 겪은 실전 경험을 바탕으로 웹훅의 실용성을 나눠보았습니다.
제가 직접 겪은 실전 경험을 바탕으로 웹훅의 실용성을 나눠보았습니다.
웹훅은 "이벤트를 실시간으로 알려주는 연결 도구"입니다.
간단하게 시작할 수 있지만, 잘 활용하면 강력한 자동화 흐름을 만들 수 있습니다.