簡介
無伺服器計算提供了一種使用雲服務設計和部署應用程式的新方式。但它究竟是什麼,又是如何工作的?
在本文中,我們將探討什麼是無伺服器、它是如何工作的,以及它如何影響開發體驗。我們將介紹它的一些優勢,並討論一些可能不適用的場景。這應該能為你提供進行額外研究所需的背景知識,並判斷無伺服器模型是否適合你的專案。
訪問 Prisma Data Platform,在一個地方管理你的所有應用程式資料。
無伺服器意味著什麼?
無伺服器描述了一種模型,其中處理能力透過 API 而非實際伺服器暴露出來。應用程式可以使用計算資源來執行程式碼,而無需管理其執行環境。
在許多方面,無伺服器代表了雲提供商為使用者抽象資源的下一個邏輯迭代。提供商不再提供虛擬化伺服器來訪問資源,而是使用按需付費模式提供對資源本身的訪問。從另一個角度來看,無伺服器是一種託管服務(例如,類似於託管資料庫例項),用於更通用的計算邏輯。
無伺服器計算
大多數情況下,當人們使用“無伺服器”一詞時,他們指的是無伺服器計算。無伺服器計算是一種正規化,使用者可以建立函式或計算邏輯,當 API 被呼叫時,這些函式或計算邏輯將由提供商執行。正因為如此,無伺服器計算提供商通常被稱為函式即服務(或 FaaS)平臺。
使用無伺服器計算進行開發時,你需要提前定義希望提供商執行的邏輯。你的應用程式可以設計成利用盡可能多的離散函式。然後,當應用程式透過暴露的端點呼叫不同的程式碼時,這些函式會按需執行。你的函式生成的任何輸出或資料會返回給呼叫者,或者解除安裝到外部儲存,因為函式本身不維護狀態。
作為開發人員,使用無伺服器時,你無需擔心維護用於執行程式碼的環境。此外,這種模型在處理不同流量時提供了靈活性,而無需管理擴縮容。你支付的費用直接與你使用的計算能力相關,因此無需提前估算和分配資源。
無伺服器資料庫
無伺服器資料庫將無伺服器正規化應用於資料庫功能。實際上,這意味著後端伺服器資源、擴縮容和資料管理都對使用者進行了抽象。使用者可以將資料庫用作 API 驅動的服務,從而無需規劃容量來應對不同場景。
通常,無伺服器資料庫採用分層架構實現。使用者可以與API 或代理閘道器互動,該閘道器自動處理到後端資源的路由。在閘道器後面,執行工作池處理接收到的任何查詢請求。實際資料儲存在第三層,任何執行工作者都可以訪問和操作該層。
在這種模型下,計算和儲存資源都可以根據需求在後臺獨立擴縮容。使用者不控制擴縮容。相反,他們只需為執行的查詢和儲存的資料量付費。
權衡取捨
現在我們已經討論了什麼是無伺服器以及它從使用者角度來看通常是如何工作的,我們可以開始確定無伺服器解決方案的適用場景。
無伺服器技術並非一勞永逸的解決方案。雖然這些新正規化可以簡化開發、部署和管理生命週期的某些部分,但它們最適用於特定型別的工作負載和應用程式設計。讓我們來看看應用程式和組織的一些特徵,這些特徵可能表明無伺服器是否是一個好的選擇。
無伺服器何時是好的選擇?
無伺服器環境可能適用於多種場景。
如果你的系統管理經驗有限
如果你的團隊沒有豐富的系統管理經驗,無伺服器提供了一種解除安裝該責任的方式。用於執行應用程式程式碼的基礎設施由平臺提供商維護,讓你能夠專注於業務邏輯。將基礎設施管理從你的職責列表中移除,可以幫助你更快地開始並隨著專案的成熟保持速度。
如果你需要強大的可伸縮性
開發人員轉向無伺服器平臺的主要動因之一與上一點緊密相關。無伺服器架構透過將其從你的關注範圍中移除,從而使擴縮容變得簡單。雖然你的應用程式今天可能只需要少量操作,但隨著採用率的提高或使用量的激增,它可能需要更多操作。
無伺服器平臺可以自動適應這些場景。這意味著你的基礎設施永遠不會過度或不足配置,因為資源分配會自動反映你的使用模式。你無需計算峰值或平均負載,也無需測試和配置擴縮容策略,因為你的提供商已經為你設計瞭解決方案。
如果你對成本敏感
如前所述,如果成本是主要考量,無伺服器平臺也極具吸引力。使用無伺服器,你只需為你執行的操作付費。你無需為那些可能需要但目前空閒的伺服器付費。這在整個開發生命週期中都很有幫助。你的開發和測試系統可以使用與生產系統相同的平臺,這有助於你更準確地進行測試,而無需承擔維護專用環境的相關成本。
何時避免使用無伺服器
無伺服器模型有許多優點,但並非適用於所有情況。
如果你的應用程式對效能敏感
如果你的應用程式對延遲或效能敏感,無伺服器架構可能無法滿足你的需求。雖然無伺服器平臺可以隨你的使用量進行擴縮容,但在識別到使用量增加並配置系統以處理新需求之前,會有一個顯著的延遲。
這通常被稱為“冷啟動”問題,它會在使用量發生顯著變化時影響系統。這種增加的啟動時間使得無伺服器不適用於許多需要無論之前活動水平如何都保持一致響應時間的使用場景。
如果你不習慣使用基於雲或特定於供應商的解決方案
如果你不習慣或無法使用基於雲或特定於供應商的解決方案,你也可以選擇避免使用無伺服器平臺。如果基於雲的基礎設施因合規性、隱私問題或僅僅是個人偏好而不可行,那麼使用無伺服器平臺將不是一個選擇。
無伺服器平臺也代表了供應商鎖定的一個案例,因為你的應用程式會與提供商的實現繫結。雖然將應用程式邏輯分解為一組離散函式似乎可以使你的工作負載可移植,但每個服務工作方式的細節可能會讓你在沒有大量遷移投資的情況下無法更換提供商。
如果你已經有基礎設施管理經驗
最後,如果你的團隊已經習慣於管理基礎設施並使用傳統部署提供的環境,那麼無伺服器可能不會為你帶來太多優勢。例如,如果你的團隊已經有一個強大的 DevOps 團隊來管理基礎設施和服務,那麼無伺服器提供的優勢可能就不那麼吸引人了。
此外,你的開發人員可能對如何測試和除錯應用程式程式碼有預期,但在無伺服器環境中可能無法實現或難以實現。可能無法以開發人員使用傳統基礎設施相同的方式對部署到無伺服器平臺的函式進行效能分析。
在為你的專案評估無伺服器時,考慮所有這些權衡取捨非常重要。對於某些情況來說,它是一個很棒的解決方案,但重要的是要弄清楚你的用例是否屬於其中之一。
總結
在本文中,我們重點解釋了“無伺服器”的實際含義以及為什麼它對許多專案來說是一個有吸引力的選擇。我們討論了函式即服務模型如何將應用程式伺服器管理解除安裝給平臺提供商,以及無伺服器資料庫產品如何能夠將資料庫操作與資料儲存分離。隨後,我們探討了哪些場景最適合無伺服器設計,以及何時它可能不是正確的解決方案。
關於無伺服器應用程式、資料庫、提供商和設計,還有很多值得學習的地方。以下資源可能在你繼續學習時有所幫助:
- 13 大無伺服器計算和資料庫提供商
- 常見無伺服器挑戰簡介
- 傳統資料庫與無伺服器資料庫
- 無伺服器詞彙表
- Martin Fowler 關於無伺服器架構的頁面(作者:Mike Roberts)
- Cloud Academy 的“什麼是無伺服器計算”
訪問 Prisma Data Platform,在一個地方管理你的所有應用程式資料。
常見問題
無伺服器架構是一種無需管理基礎設施即可構建和執行應用程式和服務的方式。
你的應用程式仍然在伺服器上執行,但所有伺服器管理都由提供商完成。
無伺服器應用程式是使用無伺服器架構構建的應用程式。
你的應用程式不需要你配置或管理任何伺服器。
由於無伺服器本質上將基礎設施的控制權交給了提供商,因此他們提供金鑰管理、身份驗證和授權等安全服務。
無伺服器安全要求你改變對應用程式安全性的看法,因為安全性並非圍繞應用程式本身構建。提供商處理應用程式功能的安全性。
一個無伺服器後端是將無伺服器正規化應用於資料庫功能。
實際上,這意味著後端伺服器資源、擴縮容和資料管理都對使用者進行了抽象。使用者可以將資料庫用作 API 驅動的服務,從而無需規劃容量。
無伺服器計算是一種正規化,使用者可以建立函式或計算邏輯,當 API 被呼叫時,這些函式或計算邏輯將由提供商執行。
正因為如此,無伺服器計算提供商通常被稱為函式即服務(FaaS)平臺。



