無服務(wù)器計(jì)算正在所有云服務(wù)供應(yīng)商間流行著,而AWS Lambda之類的工具將可能改變資源的利用方式,盡管這一切還在萌芽階段。
無服務(wù)器架構(gòu)是云服務(wù)提供商之間最新興起的熱潮,但這種利用公有云資源的新生方法也許是一個(gè)值得現(xiàn)階段一切炒作的趨勢(shì)。
亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)在2014年首次借由AWS Lambda推出所謂的事件驅(qū)動(dòng),無服務(wù)器計(jì)算資源。這項(xiàng)業(yè)務(wù)一直都占據(jù)絕對(duì)的領(lǐng)導(dǎo)地位,直到今年IBM,谷歌和微軟各自推出了自己的版本。他們都試圖在這個(gè)用戶越來越多的將責(zé)任下放給云服務(wù)提供商,但同時(shí)又尋求資源分配控制的更細(xì)粒度的市場(chǎng)中脫穎而出。
無服務(wù)器服務(wù)背后的想法是,開發(fā)者不必?fù)?dān)心采購,配置或管理任何的基礎(chǔ)資源,就可以部署他們的代碼。當(dāng)然,在無服務(wù)器架構(gòu)中,服務(wù)器仍然存在于公有云供應(yīng)商的大型數(shù)據(jù)中心的某處,但這種抽象化允許用戶和供應(yīng)商雙方都能獲得更高的效率并專注于他們各自最擅長(zhǎng)的部分。
“在這種情況下,這種炒作是絕對(duì)有保障的,”Forrester Research的首席分析師Dave Bartoletti說道。
應(yīng)用在傳統(tǒng)上被設(shè)計(jì)成單一的整體,即將所有代碼整合成一個(gè)大塊。無服務(wù)器架構(gòu)則允許開發(fā)人員將他們的應(yīng)用切成小塊,并以高度可擴(kuò)展的方式在彈性的基礎(chǔ)架構(gòu)中部署它們,甚至比使用容器還要方便,Bartoletti說道。
能夠看出這些無服務(wù)器計(jì)算模式優(yōu)劣的一個(gè)常見例子是上傳照片到網(wǎng)站。要先啟動(dòng)一個(gè)實(shí)例,然后開發(fā)人員可以編寫一大串代碼和一堆的任務(wù),包括打開一個(gè)文件夾、調(diào)整圖像大小、制作備份,并確保圖像正確加載。
或者,開發(fā)人員也可以只編寫一小段代碼,并使用一個(gè)Lambda函數(shù)來監(jiān)視目錄,執(zhí)行代碼,并上傳圖片。用戶只需要支付此函數(shù)運(yùn)行的幾毫秒,而不是云平臺(tái)運(yùn)行一個(gè)實(shí)例所需的幾分鐘或者幾小時(shí)的費(fèi)用。
如此看來,無服務(wù)器計(jì)算的點(diǎn)不在于其技術(shù),而是其定價(jià)和方案了,Andrew Reichman,451 Research的研究總監(jiān)解釋道。它有改變資源使用方式,更緊密地將基礎(chǔ)架構(gòu)和應(yīng)用程序開發(fā)平臺(tái)聯(lián)系起來的潛力,而其定位則介于基礎(chǔ)架構(gòu)即服務(wù)和平臺(tái)即服務(wù)(PaaS)之間。
“按小時(shí)或分鐘租賃一臺(tái)服務(wù)器是重大決策,但實(shí)際上,即使這樣也還達(dá)不到你所需要的業(yè)務(wù)細(xì)分粒度,”Reichman說道。最終,用戶想要“做(他們)所需要的計(jì)算并只為(他們)實(shí)際使用的時(shí)間來支付費(fèi)用,而不是付完錢后等待有作業(yè)運(yùn)行。”
由于圍繞需求的不確定性,想知道該為某個(gè)作業(yè)選擇什么樣的服務(wù)器是很難的,Reichman說道。即便你選擇的也許不是一個(gè)典型的私有數(shù)據(jù)中心為期五年的合同,開發(fā)者仍然會(huì)被迫選擇一個(gè)服務(wù)器來編寫他們的工作負(fù)載。
谷歌、微軟和IBM跟隨亞馬遜步伐
Lambda仍然是顯示無服務(wù)器計(jì)算潛力的最好例子,因?yàn)閬嗰R遜在市場(chǎng)上有著相當(dāng)大的領(lǐng)先,更長(zhǎng)的運(yùn)行記錄和用戶知名度。谷歌在2月開始進(jìn)行Cloud Functions的alpha測(cè)試,但對(duì)具體進(jìn)展守口如瓶。IBM隨之在三月份在其PaaS產(chǎn)品Bluemix中加入了OpenWhisk,盡管該服務(wù)目前還是試驗(yàn)階段。微軟在三月底增加了Azure Functions做為他們一連串發(fā)布的收尾,目前該功能還在試用期。
其實(shí),Lambda并不是第一個(gè)無服務(wù)器基礎(chǔ)架構(gòu),就像容器在Docker誕生之前很長(zhǎng)時(shí)間就存在了。事實(shí)上,面對(duì)所有的炒作,部分云供應(yīng)商已經(jīng)采取措施來將現(xiàn)有服務(wù)更名為無服務(wù)器服務(wù)。最近在舊金山舉行的用戶大會(huì)上,谷歌在谷歌云平臺(tái)上提到了至少四個(gè)無服務(wù)器的產(chǎn)品,其中包括了App Engine,這是谷歌在2008年首次推出的PaaS產(chǎn)品。
亞馬遜還沒有披露Lambda的增長(zhǎng)速度,這仍然被當(dāng)作為早期采用者提供的一個(gè)服務(wù),但正被高端客戶Netflix,Capital One和MLB所使用。熱門的使用案例包括無服務(wù)器數(shù)據(jù)處理功能,通過API網(wǎng)關(guān)與簡(jiǎn)單存儲(chǔ)服務(wù)協(xié)作來運(yùn)行Web應(yīng)用程序的微服務(wù),使用其將物聯(lián)網(wǎng)設(shè)備作為開發(fā)平臺(tái)以及為無數(shù)的AWS環(huán)境提供連接。
x86的革命使得人們對(duì)應(yīng)用設(shè)計(jì)的要求很低,因?yàn)楫?dāng)服務(wù)器有90%的時(shí)間是閑置的時(shí)候,也沒有所謂的效率之說,但現(xiàn)在,無服務(wù)器架構(gòu)正在扭轉(zhuǎn)這個(gè)趨勢(shì),并開始進(jìn)入優(yōu)化的深水區(qū),Reichman說道。這讓人想起使用打孔卡和調(diào)度作業(yè)執(zhí)行的早期大型機(jī)時(shí)代,他補(bǔ)充道。
為時(shí)尚早
像Lambda這樣的工具很難讓許多IT專業(yè)人員完全弄懂,特別是那些對(duì)本地和公有云進(jìn)行初步性價(jià)比評(píng)估的人來說,David Pippenger,一家總部位于舊金山的游戲公司GREE的高級(jí)服務(wù)器業(yè)務(wù)工程師說道。
現(xiàn)在有一些非常簡(jiǎn)單的用例,但真正的潛力還在于未來,Pippenger補(bǔ)充道。
“云就像調(diào)節(jié)按鈕讓水更大一樣便捷,我們正在越來越接近這個(gè)類比。”
GREE已經(jīng)使用了Lambda,但該公司依然在適應(yīng)這個(gè)服務(wù)。這家游戲公司原本打算在從亞馬遜關(guān)系數(shù)據(jù)庫服務(wù)(RDS)遷移到DynamoDB的過程中使用它來作為觸發(fā)器,但最終放棄了這個(gè)計(jì)劃。RDS是存放在一個(gè)虛擬私有云中,而那些為了在公共互聯(lián)網(wǎng)上使用Lambda的同時(shí)確保傳輸安全所需要的額外步驟令人望而卻步,Pippenger說道。
雖然部分安全訪問控制有了明顯的改善,但也就是這些類型的案例凸現(xiàn)了其還處在萌芽階段。“它還沒有完全準(zhǔn)備就緒進(jìn)入廣泛使用的階段,”Pippenger說道。
Lambda只支持某些類型的事件,而盡管其很大的賣點(diǎn)是能夠?qū)懲甏a就立刻運(yùn)行,目前它僅支持Node.js,Python和Java。要獲得更多產(chǎn)品化用例,在延遲保證方面能夠看到更多的服務(wù)級(jí)別協(xié)議會(huì)很有幫助,Reichman說道。
在評(píng)估一個(gè)無服務(wù)器計(jì)算的方法之前,企業(yè)應(yīng)該對(duì)他們的開發(fā)人員作調(diào)研,了解他們目前的應(yīng)用可能受益的程度;如果一個(gè)任務(wù)用微服務(wù)處理更好的話就沒必要浪費(fèi)時(shí)間做成無服務(wù)器計(jì)算,Bartoletti說道。對(duì)于新的應(yīng)用,開發(fā)者應(yīng)該先考慮微服務(wù)的架構(gòu),但要謹(jǐn)慎推行,因?yàn)閷⑦M(jìn)程分割成更小的部分時(shí)增加的復(fù)雜性可能會(huì)超出想象。
想要改造遺留應(yīng)用并不容易,最好應(yīng)限于那些擁有原生云架構(gòu)并以DevOps模式工作的公司,Reichman說道。
“如果你有一個(gè)充其量只是基礎(chǔ)架構(gòu)層面的應(yīng)用,那么無服務(wù)器計(jì)算與你毫不相關(guān),”他說道。