Fizzy 웹훅 활용 아이디어
Fizzy의 다양한 이벤트는 팀의 생산성을 높일 수 있는 여러 통합 시나리오를 가능하게 합니다.
-
팀 성과 대시보드:
card_published에서card_closed까지의 카드 처리 시간, 담당자 및 보드별 이슈 처리 속도를 추적하여 팀의 효율성을 시각화합니다. -
개인별 Slack/Teams 요약:
card_published,card_assigned,card_unassigned,card_closed이벤트를 기반으로 개인별 생성, 할당, 완료된 카드에 대한 일일 요약을 제공합니다. -
이탈 감지기:
card_triaged,card_sent_back_to_triage,card_postponed이벤트를 활용하여 컬럼 간 이동이 잦거나 반복적으로 토리아지되는 카드를 감지합니다. -
교차 보드 인시던트 뷰:
card_board_changed이벤트를 모니터링하여 인시던트 또는 에스컬레이션 보드로 이동하는 카드를 별도의 대시보드에서 관리합니다. -
댓글 활동 스트림:
comment_created이벤트를 검색 인덱스나 지식 베이스로 전송하여 모든 보드의 토론 내용을 검색할 수 있도록 합니다.
더 나아가, Fizzy에 직접 로그인하지 않는 이해관계자들에게도 인사이트를 제공하는 심화된 도구 구축이 가능합니다.
-
이해관계자 현황 보고서:
card_published,card_closed,card_postponed,card_sent_back_to_triage이벤트를 기반으로 프로젝트별 주요 카드 현황을 주간 요약 이메일로 발송합니다. -
업무량 및 부하 알림: 특정 담당자에게 할당된 미해결 카드 수가 기준치를 초과하거나, 카드가 특정 컬럼에 장기간 머무를 경우 관리자에게 알림을 보냅니다.
-
SLA 및 에스컬레이션 알림: 특정 라벨(
Incident)이 붙거나 특정 보드에 있는 카드가 정해진 시간 내에 완료되지 않을 경우, PagerDuty와 같은 도구와 연동하여 알림을 트리거하거나 카드를 에스컬레이션 보드로 자동 이동시킵니다.
웹훅 설정 및 기술적 개요
웹훅 설정은 간단합니다.
-
Fizzy 보드에서 웹훅 아이콘을 클릭합니다.
-
웹훅 이름, 페이로드 URL을 입력하고 수신할 이벤트 유형을 선택합니다.
-
설정 저장 후 제공되는 웹훅 시크릿(보안 검증에 필요)과 이벤트 로그를 확인합니다.
Fizzy 웹훅 시스템은 HTTP POST 요청을 통해 이벤트를 전송하며, X-Webhook-Signature 헤더에 HMAC-SHA256 서명을 포함하여 요청 본문의 무결성을 보장합니다. 서명 검증을 위한 Ruby 코드는 다음과 같습니다.
ruby
require 'openssl'
def verify_signature(body, signature, secret)
expected = OpenSSL::HMAC.hexdigest('SHA256', secret, body)
OpenSSL.secure_compare(expected, signature)
end
주요 이벤트 유형으로는 card_published, card_triaged, card_assigned/card_unassigned, card_closed, card_reopened, card_postponed, card_sent_back_to_triage, card_board_changed, comment_created 등이 있습니다.
페이로드 캡처 및 관찰 사항
저자는 WEBrick 기반의 Ruby 스크립트를 사용하여 웹훅 리시버를 구축하고 ngrok을 통해 로컬 서버를 인터넷에 노출하여 다양한 이벤트 페이로드를 성공적으로 캡처했습니다. 이 과정에서 다음과 같은 중요한 관찰 사항이 있었습니다.
-
카드 본문 미포함: 웹훅 페이로드의 카드 객체에는 제목만 포함되며, 전체 설명이나 본문 내용은 포함되지 않습니다. Fizzy는 현재 공개 API가 없어 프로그램적으로 전체 내용을 가져올 수 없습니다.
-
컬럼 데이터 조건부 포함: 컬럼 객체는
card_triaged,card_closed,card_reopened등 카드가 특정 컬럼으로 실제로 이동하는 이벤트에만 나타납니다. -
ID는 문자열 형식: 모든 식별자는
"03f25q9q7bw7t3206v9ttiy53"와 같은 문자열이며, 정수형이 아닙니다.