UStackUStack
Outpost icon

Outpost

Outpost 是開源基礎設施,用可靠方式將應用程式事件傳送到 Webhook 與佇列等目的地;支援託管服務或自架 Go/Docker 部署。

Outpost

Outpost 是什麼?

Outpost 是開源基礎設施,用於將事件傳送到使用者偏好的目的地,例如出站 webhook 及多種事件/佇列系統。它旨在幫助應用程式可靠地發送事件通知,重點在於相較自行建置與維護 webhook 傳遞邏輯,能降低運營複雜度。

Outpost 可透過 Hookdeck 的託管服務使用,或從開源程式碼自架。其核心目的是出站事件傳遞:您發布事件,Outpost 會使用主題/訂閱及傳遞保證,將其路由至已配置的目的地。

主要功能

  • 至少一次傳遞保證:訊息至少傳遞一次,旨在防止事件遺失。
  • 基於主題的訂閱:發布/訂閱模式,讓事件類型更容易對應至目的地。
  • 自動與手動重試:可配置自動重試,或透過 API 或使用者入口觸發重試。
  • 多種傳遞目的地:支援 webhook 傳遞,以及 AWS SQS、RabbitMQ、Pub/Sub、EventBridge、Kafka 等事件目的地(詳見頁面清單)。
  • 多租戶支援:單一 Outpost 部署可運行多個租戶。
  • 開發者入口與目的地控制:檢視指標、管理、除錯及觀察事件目的地。
  • OpenTelemetry 支援:包含 OpenTelemetry 追蹤、指標及記錄。
  • 冪等性與傳遞標頭:提供冪等性標頭、時間戳及簽章(包含簽章輪替),並有選擇退出機制。
  • 依需求部署(託管或自架):以 Go 二進位檔或 Docker 映像提供自架;無論託管或自架皆使用相同 Outpost。

如何使用 Outpost

  1. 選擇部署模式:從託管服務開始(「Get started」)或使用提供的發行版本(Go 二進位檔或 Docker 映像)運行開源自架版本。
  2. 定義目的地:配置一或多個傳遞目標(例如 webhook 端點,或佇列/匯流排目的地)。
  3. 設定主題與訂閱:建立事件主題(事件類型)與接收目的地的對應。
  4. 發布事件:使用 Outpost API 發送事件,或發布至 Outpost 可讀取的佇列。
  5. 運營與疑難排解:使用使用者入口觀察傳遞指標、管理目的地,並在需要時觸發重試。

使用案例

  • 應用程式事件可靠出站 webhook 傳遞:將應用程式事件(例如 user.createdorder.created)路由至 webhook 目的地,具至少一次傳遞及重試。
  • 基於佇列的發布以解耦生產者與傳遞:將事件發布至佇列,配置 Outpost 讀取後傳遞至下游系統。
  • 跨多事件目的地的扇出:使用主題/訂閱配置,將相同或相關事件主題發送至不同目的地(例如 webhook 加上訊息佇列/匯流排)。
  • 多租戶事件傳遞:從單一 Outpost 部署服務多個租戶,按租戶隔離傳遞配置。
  • 事件管線的除錯與運營可見性:使用入口追蹤目的地狀態及傳遞結果,失敗時使用手動重試。

常見問題

  • 我可以自行運行 Outpost,或需要託管服務? Outpost 同時提供託管服務及開源軟體自架。

  • Outpost 如何處理重試? 支援自動重試,並可透過 API 或使用者入口進行手動重試。

  • Outpost 提供何種傳遞保證? 頁面指出訊息至少傳遞一次。

  • Outpost 提供可觀測性功能嗎? 是的。包含 OpenTelemetry 追蹤、指標及記錄的支援,並提供開發者入口用於指標及目的地觀察。

  • Outpost 如何簽章及保護 webhook 傳遞? 頁面提及時間戳及簽章標頭(含簽章輪替)、冪等性標頭,以及選擇退出機制。

替代方案

  • 自行建置 Webhook 發送器:建置自訂 Webhook 傳送、重試與安全性。這會將營運與可靠性負擔轉移到應用程式團隊。
  • 無出站傳送層的通用事件/佇列系統:使用儲存/傳輸事件(佇列或匯流排)的平台,並自行實作消費者邏輯來推送至 Webhook/目的地。
  • 其他託管 Webhook/事件傳送服務:使用路由事件至 Webhook 端點的託管服務;依其重試處理、傳送保證及多目的地傳送來比較。
  • 自架事件路由元件:尋找專注從生產者路由至目的地的開源或可自架元件,特別是有訂閱/主題語意及營運工具的。
Outpost | UStack