Cloudflare開源了自家無伺服器服務Workers的核心Workerd,該專案為JavaScript/Wasm Runtime,目前為第一個Beta版本。Workerd與Cloudflare Workers服務的Runtime,共用大部分程式碼,但是Cloudflare對其進行了一些更改,使其更易於移植到其他環境。

Cloudflare開源Workerd有三個主要目的,第一是要讓Workerd用戶自託管Cloudflare Workers上執行的應用程式,官方提到,因為Workerd無關託管環境的設計,因此能夠適用於任何伺服器、虛擬機器和容器的託管、調度系統。

Workers建立於標準API之上,因此用戶程式碼不會被鎖定在Cloudflare中,能夠和其他Runtime相容互通,而Workerd提供Workers用戶額外的選擇,能夠讓針對Workers建構的應用程式在其他位置運作。

Workerd也能夠支援用戶的本地開發和測試工作負載,過去用戶需要使用Node.js環境模擬Workers API的Miniflare專案完成此工作,但官方提到,雖然Miniflare運作良好,但是在許多情況下,Miniflare與Cloudflare上執行的Worker行為並不一致,而透過Workerd,Miniflare和Wrangler CLI工具就能提供更加精準的模擬。

Workerd的第三個用處是充當應用程式主機與代理,並支援正向和反向代理模式,在所有情況下,Workerd執行的JavaScript程式碼,都可以在轉發請求和回應前先攔截和處理,官方提到,Workerd的優點在於JavaScript提供代理許多程式開發功能,比起傳統網頁伺服器和代理更容易理解配置。

值得注意的是,Workerd並非安全沙盒,無法用來安全地執行具有潛在惡意程式碼的程式,用戶可以將其包覆在額外的沙盒中,像是針對沙盒配置的虛擬機器,以執行不受信任的程式碼。官方解釋,雖然Workerd本身被設計成無法存取未授權的外部資源,但是完整的沙盒解決方案,不只有限制存取,還必須考慮軟體和硬體間可能存在的錯誤,Workerd無法抵禦像是Spectre這樣的硬體錯誤,也不能抵禦V8或Workerd本身程式碼可能存在的漏洞。

雖然Cloudflare Workers服務和Workerd共用大部分程式碼,但是Workers服務在上層還增加了許多額外的安全層,來加強防範這類的錯誤。

Cloudflare不只在GitHub開源Workerd,由於Workerd本身就是Cloudflare的核心,所以開發團隊會直接在這個儲存庫完成大部分的開發工作,就如同V8和Chrome開發團隊的關係一樣,Workerd將主要由Cloudflare Workers團隊開發,並直接用於Workers服務。

熱門新聞

Advertisement