[PRMemo] GitHub Webhook vs 배치 프로그램

2025. 6. 19. 21:24·Project

프로젝트에서 사용자의 깃허브 레포지토리, PR목록을 서버로 자동 동기화 해야하는데 

Webhook과 배치 중 어느 쪽이 더 적절할지 결정이 필요했음

1. Webhook / 배치 프로그램 차이점

항목 Webhook 배치 프로그램
작동 방식 GitHub 이벤트 발생 시 즉시 알림 주기적으로 서버에서 GitHub API 호출
트리거 조건 PR 생성, push, comment 등 설정된 시간마다 무조건 실행
실시간성 ✅ 매우 뛰어남 ❌ 느릴 수 있음
API 호출 횟수 필요할 때만 반복적으로 호출 (비효율적 가능성 있음)
GitHub 설정 필요 ✅ Webhook 수동 등록 ❌ 없음
구현 난이도 서버 수신기 필요 (POST endpoint) 비교적 간단 (스케줄러만 설정하면 됨)

 2. 실제 사용 시나리오

이 서비스는 사용자가 GitHub OAuth 로그인 후 먼저 리포지토리의 PR 목록을 동기화 시키고 

이후 상태 변경(리포지토리/ PR 추가 삭제 수정)이 있을 경우 실시간으로 업데이트 되기를 원함 

 

👉 고려한 요구사항

  • PR 상태 변경은 즉시 반영되어야 함
  • 사용자가 참여한 레포가 많고, PR도 자주 생성됨
  • GitHub API rate limit(제한)이 존재
  • 일부 레포는 Webhook 설정 권한이 없음

3. 선택 : 배치+사용자가 직접 새로 고침할 수 있도록  동기화 버튼 추가 

Webhook의 단점은, 레포지토리마다 수동으로 설정해줘야 한다는 점이다.

특히 여러 사용자가 참여하는 시스템에서는 모든 레포에 직접 Webhook을 등록하는 것이 매우 번거롭고 비효율적일 수 있다.

그리고 협업자나 다른 사용자 레포지토리는 설정 권한이 없을 수도 있음

 

그래서 Webhook의 실시간성은 포기하고 

 

  • 배치 프로그램으로 기본적인 자동 동기화
  • 사용자 수동 동기화 버튼으로 누락/딜레이 대응 

전략을 사용하기로 했다

 

그 이유는 

1. Webhook 없이도 UX 보완 가능 (WebHook 설정 번거로움 제거)

2. 사용자에게 통제권을 제공할 수 있다

 

4. 향후 추가 포인트 

- PR 목록이 오래된 경우 "마지막 동기화: 00분 전" 표시도 UX 향상

- 만약 버튼을 여러 번 누르는 걸 막고 싶다면: 서버에서 "최근 1분 이내에 이미 동기화됨" 같은 제한 추가 

- 사용자 로그인 시, 소유한 모든 레포에 Webhook 자동 등록 기능 추가 

 

 

'Project' 카테고리의 다른 글

프로젝트 회고 : Juseyo - 재고 관리 플랫폼  (0) 2025.06.05
프로젝트 회고: Hakple – 학원생 커뮤니티 플랫폼  (1) 2025.05.01
'Project' 카테고리의 다른 글
  • 프로젝트 회고 : Juseyo - 재고 관리 플랫폼
  • 프로젝트 회고: Hakple – 학원생 커뮤니티 플랫폼
Jiyuuuuun
Jiyuuuuun
  • Jiyuuuuun
    Hello, World!
    Jiyuuuuun
  • 전체
    오늘
    어제
    • 분류 전체보기 (107)
      • TIL (56)
      • CS (12)
        • Network (4)
        • Algorithm (6)
      • JAVA (5)
      • Project (10)
        • HakPle (3)
        • JUSEYO (4)
      • Spring (2)
      • C (3)
      • C++ (16)
      • Snags (2)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    juseyo
    CSS
    HTML
    멋쟁이사자처럼
    부트캠프
    front-end
    springboot
    nginx
    Docker
    java
    node.js
    JPA
    react
    Kubernetes
    back-end
    hakple
    javascript
    db
    my_favorite_place
    JDBC
    SQL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Jiyuuuuun
[PRMemo] GitHub Webhook vs 배치 프로그램
상단으로

티스토리툴바