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