無伺服器計算是根據已使用狀態提供後端服務的方法。雖然仍會使用伺服器,但會向透過無伺服器廠商取得後端服務的公司根據使用情況收費,而非根據固定的頻寬量或伺服器數量。
閱讀本文後,您將能夠:
複製文章連結
無伺服器計算是一種按需提供後端服務的方法。無伺服器提供者允許用戶編寫和部署代碼,而不必擔心底層基礎結構。從無伺服器提供商獲得後端服務的公司將根據計算量來付費,由於這種服務是自動擴展的,不必預留和付費購買固定數量的頻寬或伺服器。請注意,雖然名為「無伺服器」,實際上依然需要物理伺服器,只不過開發人員不需要考慮伺服器而已。
在網路時代早期,任何想要建置網頁應用程式的人都必須擁有執行伺服器所需的實體硬體,這是繁瑣又昂貴的一件事。
然後是雲計算,可供遠端租用固定數量的伺服器或伺服器空間。租用這些固定伺服器空間的開發人員和公司通常會過度採購,以確保其應用程式不會因為流量或活動的激增超過每月限額而中斷。這意味著所購買的大部分伺服器空間可能被浪費。雲供應商已經引入了自動擴展模型來解決該問題,但是即使使用了自動擴展,也可能因為惡意活動激增(例如 DDoS 攻擊)而產生非常高昂的成本。
無伺服器計算允許開發人員以彈性的「隨用隨付」方式購買後端服務,代表開發人員只需要支付使用的服務。這就像從每月固定限額的手機數據方案,改成僅根據實際使用的每位元組數據量來收費。
「無伺服器」一詞有些誤導,因為仍然有伺服器提供這些後端服務,但所有伺服器空間和基礎結構問題都由廠商處理。無伺服器代表開發人員可以專心工作,完全不必擔心伺服器問題。
應用程式開發通常分為兩個領域:前端和後端。前端是使用者看見並互動的應用程式部分,例如視覺版面配置。後端是使用者看不見的部分:這包括應用程式檔案所在的伺服器,以及使用者資料和商務邏輯所在的資料庫。
例如,讓我們想像一個銷售音樂會門票的網站。當使用者在瀏覽器視窗中輸入網站位址時,瀏覽器向後端伺服器發送請求,後端伺服器用網站資料進行回應。然後,用戶將看到網站的前端,其中可能包括文本、影像和供使用者填寫的表單字段。接著使用者可以與前端的表單欄位之一互動,以搜尋最愛的音樂活動。使用者按一下「提交」後,會觸發另一個傳送至後端的請求。後端程式碼會檢查其資料庫,以查看此名稱的表演者是否存在,如果存在,還會查看下次表演時間,以及剩下多少票券。然後後端會將該資料傳回前端,前端將會以使用者可讀的方式顯示結果。同樣地,當使用者建立帳戶並輸入財務資訊以購買票券時,就會發生另一個在前端與後端之間往返的通訊。
大部分的無伺服器提供者都向客戶提供資料庫和儲存服務,許多提供者也有函數即服務 (FaaS) 平台,例如 Cloudflare Workers。FaaS 允許開發人員在網路邊緣運行小段代碼。使用FaaS,開發人員可以構建模組化的架構,使代碼庫更具有可擴展性性,而不必花費資源維護底層後端。進一步瞭解 FaaS >>
進一步瞭解無伺服器計算的優勢。
兩種常與無伺服器計算混為一談的技術是後端即服務和平台即服務。儘管存在相似之處,這些模型不一定能滿足無伺服器計算的要求。
後端即服務(BaaS)服務模型中,雲提供商提供資料存儲等後端服務,以便開發人員能專注于編寫前端代碼。但無伺服器應用程式受事件驅動並在邊緣運行,BaaS 應用程式可能並不滿足這兩個條件中的任何一個。進一步瞭解 BaaS >>
平台即服務(PaaS)模型中,開發人員從雲提供商租用所有必要的工具來開發和部署應用程式,包括作業系統和中介軟體等。但 PaaS 應用程式擴展不能象無伺服器應用程式那樣輕鬆擴展。PaaS 也不一定在邊緣運行,且往往有明顯的啟動延遲,這在無伺服器應用程式中是不存在的。進一步瞭解 PaaS >>
基礎結構即服務(IaaS)是一個籠統的術語,泛指代表客戶託管基礎結構的雲供應商。IaaS 提供商可能提供無伺服器功能,但兩者並不同義。進一步瞭解 FaaS >>
隨著無伺服器提供商提出解決方案以克服其一些缺點,無伺服器計算繼續發展。其中一個缺點是冷啟動。
通常情況下,當某個無伺服器函數在一段時間內未被調用時,提供商會將其關閉以節省能源和避免過度配置。下次有使用者運行一個調用該函數的應用程式時,無伺服器提供商將必須重新啟動並重新開始代管該函數。這個啟動時間增加明顯的延遲,稱為「冷啟動」。
一旦函數啟動並運行,它在後續請求中將獲得更快的服務速度(暖啟動),但如果在一段時間內沒有再次被請求,就會重新進入休眠。這意味著下一個請求該函數的使用者將經歷冷啟動。直到最近,冷啟動仍被認為是使用無伺服器函數的一個必要權衡。
Cloudflare Workers 已通過在 TLS 握手階段提前啟動無伺服器函數來解決這個問題。由於 Workers 函數在邊緣上啟動的時間非常短,甚至小於完成握手所需的時間,結果就是一個零冷啟動的 FaaS 平台。要開始使用 Cloudflare Workers,請查閱我們的開發者文件。
隨著越來越多使用無伺服器計算的缺點得到解決,以及邊緣計算進一步普及,我們預期伺服器架構將得到更廣泛的應用。