無服務器計算是一種按需提供后端服務的方法。無服務器提供者允許用戶編寫和部署代碼,而不必擔心底層基礎設施。從無服務器提供商獲得后端服務的公司將根據計算量來付費,由于這種服務是自動擴展的,不必預留和付費購買固定數量的帶寬或服務器。請注意,雖然名為“無服務器”,實際上依然需要物理服務器,只不過開發人員不需要考慮服務器而已。
在Web早期,任何想要構建Web應用程序的人都必須擁有運行服務器所需的物理硬件,這是一項繁瑣而昂貴的工作。
然后是云計算,可供遠程租用固定數量的服務器或服務器空間。租用這些固定服務器空間的開發人員和公司通常會過度采購,以確保其應用程序不會因為流量或活動的激增超過每月限額而中斷。這意味著所購買的大部分服務器空間可能被浪費。云供應商已經引入了自動擴展模型來解決該問題,但是即使使用了自動擴展,也可能因為惡意活動激增(例如 DDoS 攻擊)而產生非常高昂的成本。
無服務器計算允許開發人員在靈活的“按需付費”的基礎上購買后端服務,這意味著開發人員僅需為使用的服務付費。這就像從每月固定限額的手機數據套餐切換到只為實際使用的每個字節數據收費的套餐一樣。
“無服務器”一詞在某種程度上具有誤導性,因為它仍然有服務器提供這些后端服務,但是所有服務器空間和基礎設施問題都由提供商處理。無服務器意味著開發人員可以完全不用擔心服務器。
什么是后端服務?前端和后端之間有什么區別?
應用程序開發通常分為兩個領域:前端和后端。前端是用戶看到并與之交互的應用程序部分,例如視覺設計。后端是用戶看不到的部分。其中包括應用程序文件所在的服務器以及持久存儲用戶數據和業務邏輯的數據庫。
例如,讓我們想象一個銷售音樂會門票的網站。當用戶在瀏覽器窗口中輸入網站地址時,瀏覽器向后端服務器發送請求,后端服務器用網站數據進行響應。然后,用戶將看到網站的前端,其中可能包括文本、圖像和供用戶填寫的表單字段。然后,用戶可以與前端上的表單字段之一進行交互,以搜索他們喜歡的音樂表演。當用戶單擊“提交”時,將觸發另一個對后端的請求。后端代碼檢查其數據庫,以查看是否存在具有該名稱的表演者,如果存在,則會反饋下次表演的時間以及有多少可售的票。然后,后端會將數據傳遞回前端,前端將以用戶能理解的方式顯示結果。同樣,當用戶創建一個帳戶并輸入財務信息以購買票時,前端與后端之間將發生另一次來回通信。
無服務器計算可以提供什么樣的后端服務?
大多數無服務器提供商都為其客戶提供數據庫和存儲服務,并且許多無服務器提供商還擁有函數即服務(FaaS)平臺。FaaS 允許開發人員在網絡邊緣運行小段代碼。使用FaaS,開發人員可以構建模塊化的架構,使代碼庫更具有可擴展性性,而不必花費資源維護底層后端。
無服務器計算的優勢是什么?
- 降低成本 – 無服務器計算通常具有很高的成本效益,因為傳統的后端服務(服務器分配)云提供商經常導致用戶為未使用的空間或空閑的 CPU 時間付費。
- 簡化可擴展性 – 使用無服務器架構的開發人員不必擔心擴展其代碼的策略。無服務器供應商可按需處理所有擴展。
- 簡化后端代碼 – 開發人員可以創建簡單的功能,這些功能獨立地執行單個目的,例如進行 API 調用。
- 加快周轉時間 – 無服務器架構可以大大縮短產品上市時間。開發人員無需通過復雜的部署過程實施錯誤修復和新功能,而是逐個添加和修改代碼。
無服務器計算與其他云后端模型相比如何?
兩種常與無服務器計算混為一談的技術是后端即服務和平臺即服務。盡管存在相似之處,這些模型不一定能滿足無服務器計算的要求。后端即服務(BaaS)服務模型中,云提供商提供數據存儲等后端服務,以便開發人員能專注于編寫前端代碼。但無服務器應用程序受事件驅動并在邊緣運行,BaaS 應用程序可能并不滿足這兩個條件中的任何一個。平臺即服務(PaaS)服務模型中,開發人員從云提供商租用所有必要的工具來開發和部署應用程序,包括操作系統和中間件等。但 PaaS 應用程序擴展不能象無服務器應用程序那樣輕松擴展。PaaS 也不一定在邊緣運行,且往往有明顯的啟動延遲,這在無服務器應用程序中是不存在的。基礎設施即服務(IaaS)是一個籠統的術語,泛指代表客戶托管基礎設施的云供應商。IaaS 提供商可能提供無服務器功能,但兩者并不同義。