無伺服器運算是一種雲端運算執行作業模型,可根據使用需求來分配機器資源。採用無伺服器模式後,開發人員就能輕鬆建構及執行應用程式,不必管理任何伺服器,而且只需支付資源實際用量的費用。執行應用程式程式碼的雲端基礎架構則由雲端服務供應商負責佈建、管理及調度資源。
雖然名稱可能造成誤解,但無伺服器運算並非完全沒有伺服器,而是指省去例行基礎架構工作,藉此簡化應用程式部署程序。也就是說,您無法查看、設定、管理或擴充執行應用程式的基礎機器。基本上,您是為伺服器服務付費,並非支付伺服器本身的費用。
從開發的角度來看,這種模式就像沒有任何伺服器存在一樣。開發人員只需編寫程式碼,然後部署至正式環境,其餘工作則由雲端服務供應商處理。
不妨將無伺服器技術想像成,家中的供水。您可以自己挖井、測試水質、安裝並維護所有必要的外部管路,讓水可以輸送到家裡。您也可以直接連接所在城市的主要供水系統。只要在需要用水時打開水龍頭,就能取得所需的量,而該城市也會根據您每月確切的用水量寄送帳單給您。
同樣地,雲端服務供應商會自動啟動執行無伺服器應用程式所需的基礎架構資源和執行階段環境,執行作業完成後,再將配置資源自動縮減至零。一般而言,系統會依據執行期間所使用的資源向您收費。不過,實際收費方式可能因服務和供應商而異。
可是,不是也有其他類型的雲端運算服務以即付即用的方式提供隨選資源嗎?基礎架構式服務 (IaaS) 和平台式服務 (PaaS) 等雲端服務模型確實也提供隨選運算資源存取方式。
不過,即使您未使用,分配給您的雲端基礎架構仍會保持運作中狀態。如要隨著使用者需求的變動來增減配置的資源,您也必須自行擴充伺服器容量,或設定應用程式。
另一方面,無伺服器架構是事件導向。因此如果採用這種模型,供應商只會在事件觸發程式碼執行時提供資源,並隨時應要求自動擴充。
主要定義:
無伺服器
PaaS
容器
VM
在無伺服器雲端運算領域,通常有兩種服務:函式即服務 (FaaS) 和後端即服務 (BaaS)。
在開發領域,「無伺服器」一詞通常用於描述 FaaS 服務。不過請注意,就技術而言,FaaS 只是無伺服器技術的一個子集。無伺服器運算涵蓋能讓使用者省去伺服器管理、設定、資源調度和帳單等工作的任何類型服務,包括資料庫、儲存空間、事件串流、訊息傳遞和 API 閘道等。
以下列舉幾個最常見和新的無伺服器運算用途:
提高開發人員工作效率
採用無伺服器技術能讓開發人員專心編寫程式碼並將商業邏輯最佳化,而不必費心佈建、管理或擴充基礎架構。
立即可用的擴充能力
無伺服器架構本身就會動態調整資源配置。有別於其他類型雲端運算必須依賴微調規則,無伺服器的自動調度資源功能會隨時運作,並能將配置資源縮減至零。
具彈性的計費方式
無伺服器運算服務的定價模式通常是根據實際用量和執行函式所需時間來計費。你不用為閒置容量付費,因此能降低執行及管理伺服器所需的營運成本。
加快部署速度
透過無伺服器運算,DevOps 團隊能順利定義整合、測試、推送或部署作業所需的基礎架構,進而集中心力編寫程式碼並部署至正式環境。
支援所有語言
無伺服器環境支援任何語言或框架,團隊可以使用最熟悉的語言或框架 (例如 Go、Python、Java、Node.js、.NET 等) 來開發。
無伺服器運算的最大缺點之一,就是這仍是較新的技術。因此,目前還不適合應用在所有可能的用途。
可以確定的是,隨著無伺服器運算技術持續演進,現有的一些弱點將會陸續解決。特別值得一提的是,無論是透過開放原始碼導入無伺服器技術,或是設法提升雲端服務的開放性,以便讓解決方案能在不同平台和環境中使用,目前都已獲得顯著的進展。