Sparrow: Go로 구현된 MIT 라이선스 기반의 자체 호스팅 웹훅 전송 서비스. 재시도, 서명, 상태 추적 및 대시보드를 제공하며
요약
Sparrow는 Go 언어로 구현된 자체 호스팅 웹훅 전송 서비스입니다. 이 오픈 소스 도구는 재시도 로직, 속도 제한, 표준 서명 방식을 제공하여 안정적인 '최소 한 번 보장(at-least-once)' 웹훅 전달을 가능하게 합니다. 또한 임베디드 대시보드를 통해 엔드포인트 관리와 디버깅이 용이합니다.
핵심 포인트
- Go 기반의 자체 호스팅 서비스로 높은 제어성을 제공하며, MIT 라이선스를 따릅니다.
- 재시도 로직, 속도 제한, 표준 서명(HMAC-SHA256 등)을 지원하여 안정성이 높습니다.
- Envelope Encryption을 사용하여 민감한 정보를 암호화하고 상태를 추적합니다.
- OpenTelemetry 트레이스, 메트릭, 로그를 내보내어 모니터링이 가능합니다.
대부분의 웹훅(webhook) 도구는 모든 페이로드(payload)를 볼 수 있는 호스팅된 SaaS이거나, 각 팀이 직접 재구축하는 무언가(큐(queue), 재시도 루프(retry loop), 서명 방식(signing scheme))입니다. 저는 자체 네트워크 내에서 전체 작업을 수행하는 오픈 소스 서비스를 원했기 때문에 Sparrow를 만들었습니다. 이는 MIT 라이선스를 따르며, 임베디드 대시보드가 포함된 단일 Go 바이너리이며, 의존성은 PostgreSQL뿐입니다(Redis나 브로커 없음).
다음 기능을 수행할 수 있습니다:
- 웹훅을 최소 한 번 보장(at-least-once)으로 안정적으로 전송합니다.
- 백오프를 이용한 재시도 기능과 엔드포인트별 속도 제한을 제공합니다.
- 429 응답 코드를 준수하며 표준 Webhooks 형식(HMAC-SHA256 또는 Ed25519)으로 전송합니다.
- 에일(rest) 상태의 비밀 정보를 Envelope Encryption을 사용하여 암호화하고, 각 엔드포인트의 상태를 추적하며, 계속 실패하는 수신기를 일시 중지할 수 있습니다.
- 모든 시도의 전체 요청 및 응답 기록을 유지하고, 대량 재전송 및 재시도를 수행합니다.
- Go 템플릿(templates)을 사용하여 페이로드를 재구성할 수 있으며, Slack, Discord, PagerDuty, ntfy, ClickHouse, Twilio, SendGrid, CloudEvents 버전 이벤트 유형에 대한 즉시 사용 가능한 레시피를 제공하고 스키마에 따라 이벤트를 검증하면서도 이벤트를 누락시키지 않습니다.
- 고객에게 자체 엔드포인트를 관리할 수 있는 임베디 가능한 포털을 제공합니다.
- OpenTelemetry 트레이스(traces), 메트릭(metrics) 및 로그를 내보낼 수 있습니다.
또한 로컬에서 전송을 받고 테스트 이벤트를 푸시하며 템플릿을 디버깅하는 CLI도 있습니다. 기여를 환영합니다: 기여 가이드, 행동 강령 및 보안 정책이 마련되어 있습니다. 예상치 못한 방식으로 작동하는 수신기에 대한 버그 보고는 특히 유용합니다. 빠진 부분, 혼란스러운 점, 또는 아무것도 잘 처리하지 못하는 웹훅 문제가 있다면 피드백을 받고 싶습니다.
https://github.com/sarathsp06/sparrow
제출자: /u/sarathsp06 [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/SelfHosted (AI filter)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기