無服務器架構和 Functions-as-a-Service(FaaS)是云計算的熱點趨勢。除了微軟和亞馬遜,還有許多其他供應商也提供FaaS。本文將為大家簡單介紹什么是無服務器架構以及我們會需要無服務器架構。
云計算的演變
在演變過程中,云已經有了多種形式和層次。
無論是內部部署還是由供應商提供的服務,數據中心都是云計算的第一步。它抽象化了物理主機環境,我們開始用硬件單元擴展這些環境。隨著虛擬化的發展,我們開始在云環境中托管虛擬機;我們抽象了硬件和使用的操作系統作為規模的單位;之后,我們為云構建了托管環境,并抽象了操作系統;再之后新的單元是應用程序;現在我們已經開始嘗試無服務器架構或者是FaaS了。
不同的云模型給予我們不同的責任。將數據中心設為本地就意味著我們要對所有事務負有全部責任,當數據中心慢慢向云轉變時,我們要承擔的責任會越來越少。
無服務器架構實際上晚于SaaS,圖中它排在SaaS前面,是因為SaaS,用戶完全不能控制關于應用程序或其基礎設施的任何事情。
無服務器架構
無服務器架構是指大量依賴第三方服務(也叫做后端即服務,即“BaaS”)或暫存容器中運行的自定義代碼(函數即服務,即“FaaS”)的應用程序,函數是無服務器架構中抽象語言運行時的最小單位,在這種架構中,我們并不看重運行一個函數需要多少CPU或RAM或任何其他資源,而是更看重運行函數所需的時間,我們也只為這些函數的運行時間付費。無服務器架構中函數可以多種方式觸發,如定期運行函數的定時器、HTTP請求或某些相關服務中的某個事件。
Mike Roberts曾在他的文中提出了有關FaaS的六點:
1.從根本上說,FaaS是運行后端代碼,無需管理自己的服務器系統或自己的服務器應用程序。
2.FaaS產品不需要對特定框架或庫進行編碼。在語言和環境方面,FaaS函數是常規應用程序。
3.由于我們沒有要運行的服務器應用程序,所以部署與傳統系統也會有不同,我們將代碼上傳到FaaS供應商,供應商會做所有的工作。
4.水平擴展是完全自動彈性的,并由提供商管理。
5.FaaS中的函數可由提供者定義的事件類型觸發。
6.大多數提供者還允許函數來觸發對HTTP請求的響應。
Adrian Cockroft在文中清楚地定義了“無服務器”:如果你的PaaS可以非常高效地在20毫秒內啟動實例,并將該實例運行0.5秒,那可以將其稱之為‘無服務器’。從中我們可以得出這樣一個結論,長時間運行的工作流和其他巨大的任務不適合無服務器架構。
功能服務
已經提供了FaaS服務的公司有:
·Microsoft – Azure Functions
·Amazon – AWS Lambda
·Auth0 – webtask
·Iron.io – IronWorker
·Planet Rational – webscript
總結
無服務器架構允許我們構建一些有用的代碼,快速運行而不消耗大量的服務器資源。但這并不意味著FaaS僅在小型場景中可用,雖然函數是一個小單位,但是它可以每秒調用數百萬次,現在問題的關鍵是我們如何將應用程序的其他組件和層轉到函數。