社群熱議 AWS Lambda 本地開發工具:是真正的無伺服器還是傳統託管服務的重新包裝?

BigGo Editorial Team
社群熱議 AWS Lambda 本地開發工具:是真正的無伺服器還是傳統託管服務的重新包裝?

本地無伺服器函式開發執行時工具 'fun' 的釋出,在開發者社群引發了一場關於無伺服器計算特性和實用性的有趣討論,特別是針對 AWS Lambda 函式。雖然該工具旨在透過模擬 Lambda 環境來簡化本地開發,但同時也重新引發了人們對無伺服器架構基本概念的討論。

支援的執行環境:

  • Node.js:系統 node, v6.10.0, v8.10.0, v10.15.3, v12.22.7, v14.18.1
  • Python:系統 python, v2.7.12,系統 python3, v3.6.8, v3.7.2
  • Go:go1.x(需要特定平臺編譯)
  • Custom:提供執行時支援

無伺服器的身份危機

開發者社群對無伺服器技術的術語和營銷提出了發人深省的問題。來自社群的一個特別引人注目的批評指出:

我一直不喜歡將這些稱為 lambda 或整體上稱為無伺服器。它們並不純粹,而且絕對是執行在伺服器上的...本質上它們就是作業系統。

這種觀點突顯了一個持續的爭論:無伺服器是否僅僅是傳統託管解決方案的現代化包裝,一些開發者將其與 PHP 共享託管模式進行類比。

實際應用和開發挑戰

儘管存在理念上的爭議,但社群討論顯示開發者對 Lambda 的實際應用充滿興趣。開發者們積極尋求使用案例並比較不同的開發方法。'fun' 執行時試圖透過提供一個與 AWS Lambda 生產環境高度相似的開發環境來滿足這一關鍵需求,儘管在使用者上下文和沙箱機制等方面存在一定侷限性。

主要限制:

  • 以本地使用者身份執行,而不是 sbx_user1051
  • 沒有程序沙箱或 chroot 隔離
  • 使用 SIGSTOP/SIGCONT 進行程序凍結
  • 原生可執行檔案必須針對本地作業系統進行編譯

替代方案和社群偏好

討論中突顯了幾種本地 Lambda 開發的替代方案,包括提供直接本地 Lambda 開發功能的 SST(sst.dev)。一些有 Serverless Framework 使用經驗的開發者對 'fun' 表示出興趣,認為它可能是一個更簡單的替代方案,不過也有人指出它的功能定位不同,主要專注於本地執行時模擬而非完整的部署管理。

技術實現考慮因素

該工具的實現揭示了 Lambda 開發中的重要技術考慮因素。它支援多個 Node.js 版本(從6.10到14.x)和 Python 執行時,儘管一些社群成員注意到缺乏 Ruby 支援。本地開發和生產環境之間的執行時差異,特別是在程序管理和安全上下文方面,仍然是開發者需要考慮的重要因素。

總的來說,雖然 'fun' 為本地 Lambda 開發提供了一個有價值的工具,但社群討論揭示了關於無伺服器正規化及其實現的更廣泛問題。這些爭論繼續影響著開發者如何處理雲函式開發和部署策略。

參考:fun - 本地無伺服器函式 λ 開發執行時