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