本篇文章更新時間:2026/01/02
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
內容目錄
打造自己的 Edge Runtime:OpenWorkers 背後的理念與實作
編輯前言:如果你曾經喜歡 Cloudflare Workers 的 DX,卻因為成本、隱私或 Vendor lock-in 而猶豫,那麼這篇《Introducing OpenWorkers – Self-hosted Cloudflare Workers in Rust》會讓你眼睛一亮。OpenWorkers 嘗試把 Edge 的威力帶回私有環境,並真正做到「自託管」。
核心觀點 (Key Takeaways)
- OpenWorkers 是一個以 Rust 建構、基於 V8 的自架 JS 執行環境,目標是複製 Cloudflare Workers 的體驗。
- 支援多項 Cloudflare 常用能力:KV、PostgreSQL、S3/R2 相容儲存、Service Bindings、Web API 等。
- 架構明確且可自託管:只需要 Docker Compose + PostgreSQL,就能把整個系統跑起來。
深入解析
原文開宗明義指出:OpenWorkers 是一個「open-source runtime for executing JavaScript in V8 isolates」。換句話說,它不是一般的伺服器框架,而是完整複製 Cloudflare Workers 的執行模型,讓你在自己的基礎建設上跑出類似的 Edge 服務。
作者提到目前支援的特性,包括:
- Bindings:如 KV、PostgreSQL、S3/R2 儲存、Service Bindings、環境變數與 Secrets
- Web API:fetch、Request/Response、ReadableStream、crypto.subtle、Blob 等
- 計時與控制:setTimeout、AbortController
並且提供 V8 Isolates sandbox,限制 CPU(100ms)與記憶體(128MB)。這點我覺得非常關鍵,因為要複製 Workers 的模式,資源隔離是核心。
原文強調:「run JavaScript on your own servers, with the same DX as Cloudflare Workers but without vendor lock-in.」
架構解讀:多元服務組成的 Workers 平台
文中給出的 ASCII 架構圖,看似複雜,但大致可以拆成三層:
- 入口層:nginx proxy
- 控制層:dashboard、api、logs、postgate、scheduler
- 執行層:多個 runner(x3),背後以 NATS 進行事件與任務分派
整體設計與 Serverless 執行平台非常接近,但卻能以 Docker 在本機或私有雲完全重建。我特別欣賞作者說的:「A single PostgreSQL database and a single Docker Compose file is all you need。」這讓整個設計變得非常可部署、甚至能在小型團隊內輕鬆試用。
筆者心得與啟發
閱讀整篇文章,我最有感的是:作者並不是「要做一個新框架」,而是「把 Edge Runtime 這個能力民主化」。許多團隊其實很喜歡 Cloudflare Workers,但:
- 成本常常因大量請求難以估算
- 數據無法離開企業內部
- 對外部供應商的依賴造成不安
OpenWorkers 正面迎擊這三個痛點,讓人第一次看到「自託管 Edge Runtime」的成熟可能性。
尤其當作者提到下一步是 execution recording & deterministic replay 時,我立刻想到:這很可能會是自託管平台中最具突破性的功能,甚至有機會比 Workers 本家更快做到開放。
整體而言,這是一個我會想持續追蹤的專案。如果你希望在自己的基礎建設上享受 Workers 的開發體驗,而不受限於雲端供應商,OpenWorkers 絕對值得一試。
