無服務器計算是一種由云提供商完全管理代碼執行的體系結構,而不是傳統的將開發應用程序部署到服務器上的方式。
這意味著開發人員在部署代碼時不必擔心管理、采購和維護服務器。以前,開發人員必須考慮部署前需要多少存儲和數據庫容量,這減慢了整個過程。
無服務器的功能有哪些?
無服務器依賴于功能即服務(functions-as-a-service),開發人員將他們的應用程序分解成小的、無狀態的塊,香港免備案主機 美國服務器,這意味著他們可以在沒有任何與底層服務器相關的的情況下執行。
最受歡迎的功能即服務產品之一是來自市場領先云供應商Amazon Web Services (AWS)的AWS Lambda。Lambda早在2014年就推出了,在Lambda上,開發人員無需配置或管理服務器即可運行代碼。AWS按100毫秒的增量對使用的計算能力收費。因此,開發人員可以專注于他們的代碼和事件觸發器,而AWS負責其余的工作。
AWS負責的工作可能包括對Amazon S3或Amazon DynamoDB表中的數據進行更改、響應使用Amazon API Gateway的HTTP請求或使用AWS SDK進行的API調用。例如,當用戶在乘車共享應用程序上申請汽車時,這可能觸發寫入獲取汽車的代碼,或者點擊應用程序上的“購買”按鈕將觸發該購買過程。
“Lambda是一個由事件驅動的執行環境,”AWS的Ian Massingham解釋道, “因此,在非常簡單的術語中,只要您有代碼和事件,當事件發生時,代碼會自動為您執行。您不必預先定位資源或創建任何常設基礎架構來提供執行環境。”
他當事件被觸發時,系統會自動分配基礎設施來執行代碼:首先在機器上啟動的Linux容器和詳細信息,然后獲得有關事件的元數據,最后將數據傳遞到執行點。
這與AWS本身內部的“傳統”部署模型相反,EC2 (彈性計算云)實例運行Web服務器或應用程序服務器,以及確定何時為他們提供服務。這為企業提供了超低成本,使用Lambda時的執行成本為0。而且,它在低使用率時具有高成本效益,在高使用率時更具可擴展性,因此不管規模大小都有好處。
Massingham表示,重要的是,Lambda并不完全等同于無服務器。 Lambda是執行部分,無服務器要大一些。“除了計算之外,您還希望不需要操作基礎架構就能運行數據存儲, Lambda就是一種不需要您操作基礎架構的方法。
在2016年的主題演講中,亞馬遜CTO Werner Vogels用了一個比喻:“以前,你的服務器就像寵物一樣。如果它們生病了,你就得把它們養好。它們像是牛,你必須放他們去吃草。但在無服務器中沒有這樣的牛,只有您的應用程序。您甚至不需要考慮恢復其健康或獲得新的應用程序,其中的所有的任務都能自動執行。”
不過,無服務器并不只是對AWS客戶可用。IBM OpenWhisk是另一種基于事件的體系結構。谷歌具有云功能,“開發人員可以創建單一用途的、獨立的功能來響應云事件,而不需管理服務器或運行時環境”。類似地,微軟也有Azure功能。
2019年4月,谷歌云宣布推出Cloud Run的公共測試版,這是一個完全托管的環境,供客戶以“無服務器”方式部署應用程序。
在當時發布的博客文章中,工程副總裁Eyal Manor和谷歌云產品管理總監Oren Teich表示:“傳統的無服務器產品遇到了諸如運行時支持受限和供應商鎖定等挑戰。開發人員經常需要在各種糾結中選擇:到底選擇無服務器帶來的易用性和速度,還是選擇容器帶來的靈活性和可遷移性。但在谷歌云,這兩種優勢你可以同時擁有。”
以前,谷歌用戶可以使用谷歌云功能有效地運行無服務器,運行客戶可以“運行無狀態HTTP驅動的容器,而不必擔心基礎設施”。然后,客戶將被按每100毫秒的使用時間收取費用。
Cloud Run基本上可以根據請求旋轉Docker容器,這意味著開發人員可以編寫代碼并將其提交到Cloud Run環境,GCP將負責配置和管理服務器,以及自動擴展以確保客戶真正支付他們使用的時間。
“我們可以做各種專有的緩存和性能增強,”Teich說,“因此,Cloud Run能夠利用我們在過去十年中建立的良好基礎,滿足用戶規模化以及靈活部署需求。”
Cloud Ru還可以與Google Kubernetes Engine(GKE)協同工作,這意味著客戶“可以在現有GKE集群上運行無服務器”。您可以將相同的無狀態HTTP服務部署到GKE集群,同時抽象出復雜的Kubernetes概念。”