什么是無服務器計算?
無服務器計算是一種按需提供后端服務的方法。無服務器架構允許用戶編寫和部署代碼,而不必擔心底層基礎設施。從無服務器提供商獲得后端服務的公司將根據(jù)其計算量來付費,而不必保留和支付固定數(shù)量的帶寬或服務器,因為該服務可自動擴展。請注意,盡管稱為無服務器,但它仍使用了物理服務器,只是開發(fā)人員不需要考慮它們的存在。
在Web早期,任何想要構建Web應用程序的人都必須擁有運行服務器所需的物理硬件,這是一項繁瑣而昂貴的工作。
之后是云,可以遠程租用固定數(shù)量的服務器或一定數(shù)量的服務器空間。租用這些固定服務器空間單元的開發(fā)人員和公司通常會過度購買,以確保流量或活動的激增不會因為超過每月限額而中斷其應用程序。這意味著通常支付的大部分服務器空間都浪費了。云供應商已經(jīng)引入了自動擴展模型來解決該問題,但是即使是自動擴展,也可能因為惡意活動激增(例如DDoS攻擊)而產(chǎn)生非常昂貴的成本。
無服務器計算允許開發(fā)人員在靈活的“按需付費”的基礎上購買后端服務,這意味著開發(fā)人員僅需為使用的服務付費。這就像從每月固定限額的手機數(shù)據(jù)套餐切換到只為實際使用的每個字節(jié)數(shù)據(jù)收費的套餐一樣。
“無服務器”一詞在某種程度上具有誤導性,因為它仍然有服務器提供這些后端服務,但是所有服務器空間和基礎設施問題都由提供商處理。無服務器意味著開發(fā)人員可以完全不用擔心服務器。
什么是后端服務?前端和后端之間有什么區(qū)別?
應用程序開發(fā)通常分為兩個領域:前端和后端。前端是用戶看到并與之交互的應用程序部分,例如視覺設計。后端是用戶看不到的部分。其中包括應用程序文件所在的服務器以及持久存儲用戶數(shù)據(jù)和業(yè)務邏輯的數(shù)據(jù)庫。
例如,我們可以想象一個賣音樂會門票的網(wǎng)站。當用戶在瀏覽器窗口中鍵入請求時,瀏覽器會將請求發(fā)送到后端服務器,后端服務器以網(wǎng)站數(shù)據(jù)作為響應。然后,用戶將看到網(wǎng)站的前端,該前端將包括文本、圖像和供用戶填寫的表單字段。然后,用戶可以與前端上的表單字段之一進行交互,以搜索他們喜歡的音樂表演。當用戶單擊“提交”時,這將觸發(fā)另一個對后端的請求。后端代碼檢查其數(shù)據(jù)庫,以查看是否存在具有該名稱的表演者,如果存在,則會反饋下次表演的時間以及有多少可售的票。然后,后端會將數(shù)據(jù)傳遞回前端,前端將以用戶能理解的方式顯示結果。同樣,當用戶創(chuàng)建一個帳戶并輸入財務信息以購買票時,前端與后端之間將發(fā)生另一次來回通信。
無服務器計算可以提供什么樣的后端服務?
大多數(shù)無服務器提供商都為其客戶提供數(shù)據(jù)庫和存儲服務,并且許多無服務器提供商還具有功能即服務(FaaS)平臺,例如Cloudflare Workers。這些平臺可以在不存儲任何數(shù)據(jù)的情況下在邊緣執(zhí)行代碼。
無服務器計算的優(yōu)勢是什么?
降低成本–無服務器計算通常具有很高的成本效益,因為傳統(tǒng)的后端服務(服務器分配)云提供商經(jīng)常導致用戶為未使用的空間或空閑的CPU時間付費。
簡化可擴展性–使用無服務器架構的開發(fā)人員不必擔心擴展其代碼的策略。無服務器供應商可按需處理所有擴展。
簡化后端代碼–使用FaaS,開發(fā)人員可以創(chuàng)建簡單的功能,這些功能獨立地執(zhí)行單個目的,例如進行API調用。
加快周轉時間–無服務器架構可以大大縮短產(chǎn)品上市時間。開發(fā)人員無需通過復雜的部署過程實施錯誤修復和新功能,而是逐個添加和修改代碼。