無服務(wù)器計(jì)算:為云中的下一個(gè)重大顛覆做好準(zhǔn)備
無狀態(tài)和事件驅(qū)動(dòng)
本文引用地址:http://butianyuan.cn/article/201808/389854.htm無服務(wù)器計(jì)算有兩個(gè)顯著特征,既有強(qiáng)大的吸引力,又面臨著更廣泛采用的障礙。
首先,無服務(wù)器功能是無狀態(tài)的,這意味著沒有用于交互的上下文。它們不存儲(chǔ)歷史記錄,因此僅使用隨附的信息處理每個(gè)請(qǐng)求。“每次都像一塊白板,但非常高效,因?yàn)槟悴恍枰獞?yīng)對(duì)重重的復(fù)雜應(yīng)用邏輯,” Wikibon分析師James Kobielus說。
另一個(gè)顯著特征是無服務(wù)器是事件驅(qū)動(dòng)的,意味著會(huì)對(duì)用戶或程序生成的動(dòng)作做出響應(yīng),事件可能包括查詢明尼阿波利斯當(dāng)前溫度的請(qǐng)求、搜索引擎查詢或數(shù)據(jù)庫記錄更新。
事件驅(qū)動(dòng)的應(yīng)用是非常高效的,因?yàn)樵诓皇褂玫臅r(shí)候不會(huì)消耗資源。這種應(yīng)用編程簡(jiǎn)單,易于擴(kuò)展?!澳憧梢栽O(shè)置應(yīng)用,這樣如果有事件進(jìn)來,那么功能運(yùn)行起來。如果有一百萬個(gè)時(shí)間進(jìn)來,你就可以應(yīng)對(duì)一百萬個(gè),”Lowery說。但是,并非每個(gè)應(yīng)用都可以被提煉為一系列無狀態(tài)事件。
綜合起來,這些讓無服務(wù)器計(jì)算成為某些請(qǐng)求的理想平臺(tái),例如查看美國明尼阿波利斯的熱或冷。然而,對(duì)于其他例如管理購物車或制作賬單來說,并不是那么好用。
Kobelius說:“有人點(diǎn)擊‘購買’,整套數(shù)據(jù)庫和運(yùn)行時(shí)功能做定價(jià),最終確定訂單,并發(fā)送確認(rèn)。所有必須以嚴(yán)格的方式發(fā)生,帶有狀態(tài)和事務(wù)流”,這使得它無法與無服務(wù)器執(zhí)行相匹配。
目前尚不清楚是否會(huì)有新的工具和擴(kuò)展程序讓無服務(wù)器技術(shù)在更為傳統(tǒng)的應(yīng)用中變得可行。無狀態(tài)應(yīng)用可以擴(kuò)展或改進(jìn)以展示有狀態(tài)的行為,就像容器一樣,輕量級(jí)虛擬機(jī)可以抽象消除底層基礎(chǔ)架構(gòu)的差異。容器也是無狀態(tài)的,但商業(yè)和開源擴(kuò)展讓容器可以用于上下文敏感的應(yīng)用中。
微軟的目標(biāo)是消除功能即服務(wù)和平臺(tái)即服務(wù)之間的界限,讓開發(fā)人員能夠混合搭配各種不同的平臺(tái)。特別是,微軟強(qiáng)調(diào)所謂的“虛擬Kubelets”,這個(gè)在12月推出的技術(shù)能夠使容器運(yùn)行各種功能或完整的應(yīng)用,但有了微計(jì)費(fèi)和自動(dòng)基礎(chǔ)設(shè)施配置,無服務(wù)器提供了很多企業(yè)客戶想要的靈活性。AWS在11月底推出了Fargate,可以在不管理服務(wù)器或服務(wù)器集群的情況下運(yùn)行容器。
微軟Azure容器項(xiàng)目管理負(fù)責(zé)人Gabe Monroy在去年12月的KubeCon + CloudNativeCon北美會(huì)議上表示:“這實(shí)際是最好的無服務(wù)器,如果基礎(chǔ)設(shè)施消失,我們將在基礎(chǔ)設(shè)施領(lǐng)域開展工作?!?/p>
Wikibon的Kobielus甚至認(rèn)為,區(qū)塊鏈這種去中心化的數(shù)字記賬技術(shù)對(duì)數(shù)據(jù)庫密集型場(chǎng)景中的無狀態(tài)來說是一種補(bǔ)充。他說:“你可以隨時(shí)回滾一個(gè)完整敘述,關(guān)于誰在什么樣的聯(lián)合框架中調(diào)用了什么。”
因此,無服務(wù)器的擁護(hù)者認(rèn)為,這項(xiàng)技術(shù)有廣闊的前景,特別是對(duì)于那些有著“提升和轉(zhuǎn)變”心態(tài)的企業(yè),他們?cè)噲D將舊應(yīng)用轉(zhuǎn)移到一種新模式上,并積極擁抱構(gòu)建和運(yùn)行這些應(yīng)用的新方法。
例如就在幾年前,房利美(Fannie Mae)公司運(yùn)行蒙特卡洛(Monte Carlo)模擬分析其抵押貸款組合的風(fēng)險(xiǎn)?,F(xiàn)在,他們正在運(yùn)行所謂的第一個(gè)在金融行業(yè)中使用無服務(wù)器的高性能計(jì)算平臺(tái)。在大約2000萬抵押貸款的模擬中,該系統(tǒng)的工作速度比以前快了4倍多。
“我們認(rèn)為沒有任何固有的技術(shù)限制可以阻止任何主要工作負(fù)載在Lambda上的使用,”AWS的Gilbert表示,他有趣地稱Fannie Mae將無服務(wù)器當(dāng)做“云中的超級(jí)計(jì)算機(jī)”。他說:“無服務(wù)器將是最簡(jiǎn)單、最簡(jiǎn)單的,對(duì)許多客戶來說是主流計(jì)算的首選方式?!?/p>
開發(fā)者的愛
無服務(wù)器模型有一個(gè)優(yōu)點(diǎn),不容易被提煉為投資回報(bào)指標(biāo):開發(fā)人員喜歡這項(xiàng)技術(shù)。無服務(wù)器架構(gòu)使他們擺脫了基礎(chǔ)架構(gòu)部署的負(fù)擔(dān),他們只需要編寫代碼就行了。
Braze的Poliandro說“無服務(wù)器技術(shù)讓我們的應(yīng)用和運(yùn)營工程師能夠以對(duì)他們更有意義的方式思考他們的責(zé)任。他們可以更快地部署,不必?fù)?dān)心周圍的基礎(chǔ)設(shè)施。”
但是,在無服務(wù)器平臺(tái)上構(gòu)建應(yīng)用,需要對(duì)開發(fā)人員如何考慮執(zhí)行任何的方式進(jìn)行重大改變?!斑x擇Lambda意味著要為代碼進(jìn)行重寫,”Ryland坦言。
無服務(wù)器架構(gòu)的粉絲說,這種局限性不在于技術(shù),而在于開發(fā)集成應(yīng)用已有60年的歷史。 Gartner的Lowery說:“無服務(wù)器技術(shù)挑戰(zhàn)了軟件應(yīng)該如何開發(fā)的一些假設(shè)和已有的模式??蛻艨吹狡渲杏泻芏鄡r(jià)值,但他們不得不學(xué)習(xí)一種全新的編程方式。”
針對(duì)無狀態(tài)、以事件驅(qū)動(dòng)的環(huán)境進(jìn)行開發(fā),并不一定比開發(fā)單一程序更容易。無服務(wù)器架構(gòu)“將復(fù)雜性從應(yīng)用轉(zhuǎn)移到連接中,”Atchison說?!斑@不是萬能的解決方案,也有自身的問題,也要解決這些問題。”
微軟建議,開發(fā)人員要熟悉基于事件的異步模式的編程,并學(xué)習(xí)使用功能協(xié)調(diào)器(如Durable Functions編程模型和Logic Apps連接器),創(chuàng)建長時(shí)間運(yùn)行的操作和狀態(tài)管理。
但是倡導(dǎo)者們說,這些好處值得陡峭的學(xué)習(xí)曲線,所需要的不僅僅是更多工具,還有更具創(chuàng)造性的軟件開發(fā)方法。
“大多數(shù)應(yīng)用所做的,絕大多數(shù)都可以呈現(xiàn)為無服務(wù)器功能,”Kobielus說。容器有助于將功能封裝并作為服務(wù)提供給用戶,它們可以獨(dú)立擴(kuò)展?!?/p>
傳統(tǒng)應(yīng)用仍然可以通過修改以利用某些無服務(wù)器功能。本質(zhì)上由事件驅(qū)動(dòng)的各種功能是可以與主應(yīng)用分開封裝的。
例如,“隨時(shí)在數(shù)據(jù)庫或文件系統(tǒng)中創(chuàng)建數(shù)據(jù),這是一個(gè)事件,”Lowery說?!斑@意味著你可以將其設(shè)置為獨(dú)立于主程序執(zhí)行其他操作。這樣做讓應(yīng)用生命周期更長,”因?yàn)閼?yīng)用可以通過使用應(yīng)用程序編程接口進(jìn)行擴(kuò)展,或者掛接到其他應(yīng)用中。
企業(yè)組織可以調(diào)整各個(gè)組成部分以便受益于無服務(wù)器執(zhí)行,并分階段遷移,而不是從頭開始重寫現(xiàn)有應(yīng)用?!皩⑿碌膽?yīng)用功能作為微服務(wù),將用戶界面組件從業(yè)務(wù)邏輯和數(shù)據(jù)訪問層拆分,并將現(xiàn)有的微服務(wù)轉(zhuǎn)換并拆分為無服務(wù)器功能,”Simform技術(shù)顧問Rohit Akiwatkar這樣說道,Simform是一家移動(dòng)和物聯(lián)網(wǎng)服務(wù)公司,已經(jīng)圍繞服務(wù)器做了廣泛發(fā)布?!半S著時(shí)間的推移,功能的數(shù)量將會(huì)增加,開發(fā)團(tuán)隊(duì)的敏捷性和速度將會(huì)提高。”
最佳時(shí)機(jī)
現(xiàn)在是CIO加入無服務(wù)器陣營的時(shí)候了嗎? Lowery認(rèn)為是的?!拔腋嬖VCIO們,這項(xiàng)技術(shù)不會(huì)消失,這不是一種流行時(shí)尚。企業(yè)應(yīng)該開始讓員工熟悉這項(xiàng)技術(shù)。”
Simform的Akiwatkar建議采取三個(gè)步驟:了解使用無服務(wù)器架構(gòu)的最佳實(shí)踐;確定高ROI的應(yīng)用;在低風(fēng)險(xiǎn)環(huán)境中嘗試無服務(wù)器功能。
所有這些讓現(xiàn)在成為開發(fā)者采用無服務(wù)器技術(shù)的最佳時(shí)機(jī)。從容器、微服務(wù)到現(xiàn)在的無服務(wù)器計(jì)算,過去五年在應(yīng)用的構(gòu)建和部署方面引入的創(chuàng)新數(shù)量比過去20年的總和還多。
在一個(gè)極度缺乏人才的經(jīng)濟(jì)體中,對(duì)下一個(gè)重要事件保持謙遜可能是吸引最優(yōu)秀人才的唯一途徑。 “你必須有一個(gè)長期采用這項(xiàng)技術(shù)的計(jì)劃,否則你將無法獲得所需的人才。開發(fā)人員會(huì)對(duì)這項(xiàng)技術(shù)充滿期待,”Lowery說。
對(duì)于那些仍在努力應(yīng)對(duì)如DevOps等無窮無盡創(chuàng)新(例如云、容器和微服務(wù))的組織來說,無服務(wù)器計(jì)算似乎又是一個(gè)令人頭痛的問題。 但在這個(gè)所有公司都想成為軟件公司的商業(yè)世界中,沒有跟上這個(gè)最新趨勢(shì)可能會(huì)讓你犯下存在感減少的錯(cuò)誤。
評(píng)論