Brandon+Butler
無服務器計算是在無需最終用戶管理的基礎設施上托管應用程序的新方式
關于無服務器計算首先要知道的是,“無服務器”是一個非常糟糕的名稱。
與其名稱相反,過去兩年來這一在云計算領域實現了突破的技術實際是在服務器上運行的。無服務器這一名稱只是體現了最終用戶不必管理運行其代碼的服務器這一事實。
這聽起來可能很熟悉。技術上,在公共基礎設施即服務(IaaS)中,最終用戶也不用實際去管理服務器——這涉及到遍布全球的亞馬遜網絡服務(Amazon Web Services)和微軟Azures。
而所謂的無服務器計算將這一概念進一步推進,僅使用完成任務所需的非常精確的計算資源來執行開發人員編寫的代碼,不多也不少。當觸發代碼的預定義事件發生時,無服務器平臺執行任務。最終用戶不需要告訴無服務器提供商事件或者函數將發生多少次。函數每執行一次,客戶就付一些錢。有些人認為函數即服務(FaaS)或者事件驅動的計算是更好的名稱。
IBM的云計算產品管理副總裁Damion Heredia負責管理IBM無服務器計算產品OpenWhisk,他解釋說:“從基礎架構角度看,我們認為它有不同的抽象層,而開發人員可以和這些抽象層進行互動。有裸機、虛擬機和容器。對于某些工作負載,我們要抽象出所有的管理,以便您可以執行代碼,而不用擔心服務器的基礎架構或者管理。這就是無服務器。”
現在,行業分析師、支持者和懷疑者正在辯論這項技術有多重要。是演進還是革命?它將用于未來的大多數應用程序,還是只有一部分用例?目前的答案是,市場還處在最早的時期,所以很難說。但不能忽視對這一技術的宣傳、興趣和潛在的優勢。
無服務器的優點
亞馬遜網絡服務在2014年推出了無服務器計算產品Lambda,掀起了無服務器市場熱潮。
AWS戰略總經理Matt Wood說,該產品源自公司最受歡迎產品的靈感:簡單存儲服務(S3,Simple Storage Service)。
Blogger Sam Kroonenburg認為S3和Lambda之間的關系是很重要的類比。Kroonenburg在他的云導師博客中解釋說:“S3處理存儲對象。您提供一個對象,S3存儲它。您不知道怎么存儲,也不知道存在哪里。您不必在意。您不用關心有沒有硬盤。沒有硬盤空間這樣的東西...所有這一切都被抽象出來了。在S3中您不能讓存儲容量過度配置或者配置不足。就是這樣。”
Wood說,“AWS希望采用同樣的理念來進行計算。Lambda處理函數。您提供函數代碼,Lambda按照需要執行它...。在Lambda中,您不能過度配置執行容量,也不能配置不足。就是這樣。”
在傳統的IaaS云環境中,客戶提供虛擬機、存儲、數據庫以及所有相關的安全和管理工具。他們將應用程序加載到這些虛擬機上,然后使用負載平衡器等工具來擴展它們。他們使用管理軟件優化他們的用例大小,并找到偶然沒有使用的虛擬機。Lambda和其他FaaS平臺提供了不同的模式。代碼是用函數編寫的。當事件發生時,觸發Lambda運行函數。就這么簡單。沒有容量規劃,沒有負載均衡;只是任務被執行。
AWS總經理Wood說,這有助于實現各種用例。例如,可以編寫Lambda函數,每次將照片上傳到S3時,Lambda會創建大小不同的副本,分別適用于桌面、移動設備和平板電腦。或者,每當將條目上傳到數據庫中時,可以編寫Lambda函數將數據加載到Amazon Redshift之類的數據倉庫中,以便以后進行分析。Wood說,許多客戶使用Lambda把AWS服務“膠合”在一起,執行報告、調度和更改數據等任務,以便準備分析。
Wood說,另一個重要的用例是在物聯網領域,這一領域需要大規模的實時響應。AWS最近推出了Greengrass平臺,能夠在物聯網設備上運行Lambda函數,該平臺可以在低連通區域的設備上執行Lambda函數,在這些區域中,不需要和云端數據中心來回的傳送數據。安防攝像機可以運行Lambda,并且每次檢測到運動時,記錄數據并將其發送到數據庫。不會有虛擬機服務器一天24小時處于空閑狀態;事件驅動的代碼只是在被觸發時才運行。AWS客戶FireEye說,通過使用Lambda而不是EC2用例,可以節省高達80%的虛擬機支出。
無服務器是最簡單的一個外包解決方案。Martin Fowler的博客非常深刻的解釋了什么是無服務器,您給某人付費,讓他來管理服務器、數據庫甚至應用邏輯。無服務器的巨大差異在于,您只需支付所需的計算,最短可以直到100ms。
不用等待服務器啟動或者配置負載平衡,任務只是無限地執行。Fowler認為,這種模式允許開發人員和公司試驗一下想法,能夠比其他模式更快的把想法推向市場。
缺點
無服務器計算不是靈丹妙藥,也有缺點。首先,這是一個非常不成熟的市場。Gartner研究總監Craig Lowery說,很難管理無服務器的大規模用例。用于協調函數組的管理工具也很少。支持這一技術的安全、監控和優化軟件還在開發中。也許最重要的是,它要求開發人員以不同的方式編寫應用程序。他解釋說:“很多限制與對軟件設計的架構約束有關。”
無服務器函數也是無狀態的。它們可以被重新使用和重新執行,但是它們不存儲狀態,它們執行它們的任務,就是這樣。供應商在FaaS平臺上收費,每執行100萬個函數收取不到一分錢,因此,供應商鼓勵開發人員計劃好運行其函數。Lowery說:“當您有很多函數時,管理會變得很混亂。”
還有一個關于鎖定供應商的問題。Lowy指出,使用FaaS內置的應用程序并將其移植到另一個平臺上,不管是在內部還是在另一個公共云中,都不容易實現。由于市場還很年輕,無服務器平臺的工具是針對它們所在的環境而定制的。AWS Lambda與許多其他AWS產品深度融合在一起。Wood說,由于Lambda支持常見的編程語言,例如Node.js、Python和Java,因此,能夠把代碼轉出來。他指出,沒有專門的Lambda語言。
Lowery說,“總體上,無服務器計算或者FaaS是虛擬機和容器現有計算范例非常強大的版本。Lambda是一個全新的東西。我想我們會看到很多人能夠成功地創建基于無服務器的整套應用程序。同時,它不太適合每一個應用程序。數據庫不會在Lambda或者需要維護狀態的任何其他應用程序中運行。”
無服務器計算市場
AWS最先把無服務器計算平臺推向市場,其他主要的IaaS公共云提供商緊隨其后。Wood甚至提出很多AWS服務是“無服務器”的論點,包括Lambda、S3以及其NoSQL DynamoDB數據庫和支持SQL的Aurora數據庫平臺。這些產品中的每一種都不需要預先規劃資源使用,也不需要持續的管理基礎設施。
Lambda每個月可免費處理100萬個請求;其后每100萬個請求的費用是0.20美元。Lambda還根據計算過程花費的時間進行收費,以平臺每秒每千兆0.00001667美元收費,四舍五入到最接近的一百毫秒。
微軟Azure與Azure Functions產品的價格相同,該公司的產品在2016年11月份正式上市。Google Functions處于測試狀態,每個月可免費提供200萬個請求,每筆交易成本稍高一點,計算速度較低。IBM沒有明確給出OpenWhisk的定價,但OpenWhisk執行官Heredia說,IBM無服務器計算平臺的最大區別在于它采用了Apache軟件基金會的開放源代碼。從理論上講,這使得客戶能夠隨時隨地運行OpenWhisk代碼。
市場上還有少數幾家創業公司提供無服務器的計算平臺、組件和管理工具。也許最知名的是Iron.io,它提供了一個基于Docker容器的無服務器計算平臺。
Gartner分析師Lowy說,市場還很年輕,沒有贏家和輸家。但是,AWS的產品占有市場的時間最長。他說,真正的關鍵在于確定無服務器系統用來干什么。FaaS可以成為一個強大的工具,用于在某一供應商的云中把各種服務“膠合”在一起。另一方面,其他物聯網事件驅動用例不一定非要采用該供應商的云。
Brandon Butler——高級編輯
高級編輯Brandon Butler為《計算機世界》的云計算領域撰寫文章,專注于業界主要廠商的發展,跟蹤最終用戶部署,以及最熱門的初創公司。
原文網址:
http://www.networkworld.com/article/3187093/cloud-computing/serverless-explainer-the-next-generation-of-cloud-infrastructure.html