無伺服器技術在科技社群中引起了很多熱烈的討論,引起了很多好奇心,也在某種程度上受到了一些批評。這項技術始於2014年的AWS Lambda的推出,後來在2016年被Azure Functions所跟隨。
Google隨後於2018年7月發布了Google Cloud功能。那麼,什麼是無伺服器技術呢?為了最好地回答這個問題,讓我們回顧一下傳統的基於伺服器的計算。
在傳統的IT模型中,你基本上掌管著一切。作為一個企業主,你需要為伺服器和其他網絡設備(如路由器和交換機)的預算,以及用於擺放伺服器的機架進行預算。
你還需要擔心搭建一個乾淨和安全的數據中心,並確保它能夠提供足夠的冷卻和冗餘的電力和互聯網服務。一旦設置完成,你就需要安裝操作系統,然後部署你的應用程序。此外,你還需要設置監控系統並實施安全功能,如防火牆和入侵防範和檢測系統。
你可能已經猜到,這是資源密集型的、昂貴的且耗費精力的。
然後,雲計算闖入了科技界,徹底改變了我們部署和管理服務器和應用程序的方式。它預示著一個新時代的到來,開發者可以輕鬆地快速建立雲服務器和數據庫,並開始他們的應用程序開發工作。不必擔心傳統IT計算所帶來的諸如停機時間、昂貴的設備和租賃數據中心等問題。
雖然雲計算帶來了部署IT資源的便利性和規模經濟,但有些公司會過度購買服務器空間和資源(如RAM和CPU)的單位,以預期網絡流量或活動的激增可能會使應用程序不堪重負。
雖然這是一個謹慎的舉措,但意外的結果是服務器資源的利用率不足,這通常會被浪費。即使有自動擴展,仍然可能會因為未預見的和突然的激增而付出昂貴的代價。此外,您仍然需要執行其他任務,例如設置負載平衡器,這也可能會增加運營成本。
顯然,儘管轉向了雲,但一些瓶頸仍然存在,並有可能增加成本和造成資源浪費。而這正是無服務器計算出現的地方。
什麼是無服務器計算
無伺服器運算是一種雲端模型,按需向用戶提供後端服務。簡單來說,雲端提供商分配計算資源,僅在應用程序運行時收費。這相當於從月度有線電視付款計劃轉換為只在觀看電視節目時支付費用。
“無伺服器”這個術語可能有點誤導性。是否涉及伺服器?當然有,但在這種情況下,伺服器和基礎架構純粹由雲端提供商處理和維護。因此,您不必擔心它們。作為開發人員,您的重點純粹是開發應用程序並確保它們按照您的滿意運行。
這樣做,無伺服器運算消除了管理伺服器的麻煩,節省了您寶貴的時間,以便開展應用程序工作。
無伺服器運算提供的後端服務
A perfect example of serverless backend service is Function-as-a-Service (FaaS) platform. FaaS is a cloud computing model that enables developers to develop, execute, and manage code in response to events without the complexity of building and managing an underlying infrastructure usually associated with the deployment of microservices.
FaaS是無伺服器運算的一個細分類,具有細微的差異。無伺服器運算包括一系列服務,包括計算、數據庫、存儲和API等。FaaS僅專注於一種事件驅動的計算模型,其中應用程序根據請求隨需執行。
FaaS計算模型的示例包括:
- 由AWS提供的AWS Lambda
- 由微軟提供的Azure函數
- 由Google提供的Cloud Functions
- 由Cloudflare提供的Cloudflare Workers
總的來說,我們已經看到,使用FaaS,您只需支付應用程序運行的時間,雲服務提供商基本上為您處理一切,包括處理基礎架構。管理伺服器不再是您擔心的事情。
無伺服器運算的好處
到目前為止,您對無伺服器運算帶來的一些優點有了良好的了解。讓我們更深入地探討擁抱這項技術的優勢。
1. 無需伺服器管理
這可能是採用無伺服器運算模型的最大優勢之一。儘管術語“無伺服器”可能被誤解為意味著沒有涉及伺服器,但事實是,應用程序仍在伺服器上運行。問題的關鍵在於伺服器管理完全是雲供應商的業務,這使您有更多時間專注於應用程序的開發。
2. 簡單且高效的擴展
無伺服器基礎架構可根據使用量、需求或用戶基數增長自動擴展應用程序。如果應用程序在多個實例上運行,伺服器將在需要時啟動和停止。在傳統的雲運算設置中,流量或活動的激增可能會輕鬆地使伺服器資源超載,導致執行的應用程序出現不一致。
3. 內建可用性
作為開發人員,您不需要構建任何特殊基礎設施來使您的應用程序具有高可用性。無服務器計算為您提供了內置的高可用性,以確保您的應用程序在需要運行時運行。
4. 降低操作成本
無服務器計算按照按需付費的方式分配資源。您的應用程序僅在代碼執行時需要後端函數,並將根據工作量的多少自動調整規模。
這提供了規模經濟,因為您只需支付應用程序運行的時間。在傳統的服務器模型中,您必須支付服務器空間、數據庫等資源的費用,而無論應用程序是否正在運行或閒置。
5. 快速部署應用程序
無服務器架構消除了後端配置的需要,並手動上傳代碼到像傳統設置中的服務器。開發人員可以輕鬆地高效地上傳小塊代碼並啟動一個優秀的產品。
部署的便利也使開發人員能夠輕鬆地補丁和更新代碼的某些功能,而無需更改整個應用程序。
無服務器計算的缺點
與無服務模型相關的缺點是什麼? 讓我們來找找看。
1. 安全
糟糕配置的應用程序是與無服務計算相關的最大風險之一。舉例來說,如果您選擇AWS,明智的做法是為您的應用程序配置不同的權限,這將決定它們如何與AWS內的其他服務互動。當權限不明確時,一個函數或服務可能具有比所需更多的權限,從而為安全漏洞留下充足的空間。
2. 廠商鎖定
選擇無服務模式可能會在遷移到另一個供應商時帶來挑戰。這主要是因為每個供應商都有其自己的功能和工作流程,略有不同。
3. 測試和調試應用程序的困難
無服務模式帶來的另一個挑戰是難以重現無服務環境,以測試和監控代碼在上線前的性能。這主要是因為開發人員無法訪問後端服務,後端服務是雲提供商的專屬。
4. 監控無服務應用程序的困難
監控無服務應用程序是一項複雜的任務,原因與調試和測試同樣困難。這已經因缺乏與後端服務集成的工具而變得更加複雜,例如AWS Lamba。
結論
無服務器計算持續受到公司和開發人員的青睞,原因有三。首先是價格實惠,這意味著降低運營成本。其次,無服務器計算促進自動和快速擴展,最後,開發人員不必擔心基礎架構,這由供應商處理。
與此同時,雲服務提供商正全天候努力解決與無服務器計算相關的一些缺點,例如應用程序調試和監控的困難。