無(wú)服務(wù)器是云計(jì)算的未來(lái)?

IT168企業(yè)級(jí)頻道
無(wú)服務(wù)器計(jì)算是一種由云提供商完全管理代碼執(zhí)行的體系結(jié)構(gòu),而不是傳統(tǒng)的將開(kāi)發(fā)應(yīng)用程序部署到服務(wù)器上的方式。

無(wú)服務(wù)器計(jì)算是一種由云提供商完全管理代碼執(zhí)行的體系結(jié)構(gòu),而不是傳統(tǒng)的將開(kāi)發(fā)應(yīng)用程序部署到服務(wù)器上的方式。

這意味著開(kāi)發(fā)人員在部署代碼時(shí)不必?fù)?dān)心管理、采購(gòu)和維護(hù)服務(wù)器。以前,開(kāi)發(fā)人員必須考慮部署前需要多少存儲(chǔ)和數(shù)據(jù)庫(kù)容量,這減慢了整個(gè)過(guò)程。

無(wú)服務(wù)器的功能有哪些?

無(wú)服務(wù)器依賴(lài)于功能即服務(wù)(functions-as-a-service),開(kāi)發(fā)人員將他們的應(yīng)用程序分解成小的、無(wú)狀態(tài)的塊,這意味著他們可以在沒(méi)有任何與底層服務(wù)器相關(guān)的的情況下執(zhí)行。

最受歡迎的功能即服務(wù)產(chǎn)品之一是來(lái)自市場(chǎng)領(lǐng)先云供應(yīng)商Amazon Web Services (AWS)的AWS Lambda。Lambda早在2014年就推出了,在Lambda上,開(kāi)發(fā)人員無(wú)需配置或管理服務(wù)器即可運(yùn)行代碼。AWS按100毫秒的增量對(duì)使用的計(jì)算能力收費(fèi)。因此,開(kāi)發(fā)人員可以專(zhuān)注于他們的代碼和事件觸發(fā)器,而AWS負(fù)責(zé)其余的工作。

AWS負(fù)責(zé)的工作可能包括對(duì)Amazon S3或Amazon DynamoDB表中的數(shù)據(jù)進(jìn)行更改、響應(yīng)使用Amazon API Gateway的HTTP請(qǐng)求或使用AWS SDK進(jìn)行的API調(diào)用。例如,當(dāng)用戶(hù)在乘車(chē)共享應(yīng)用程序上申請(qǐng)汽車(chē)時(shí),這可能觸發(fā)寫(xiě)入獲取汽車(chē)的代碼,或者點(diǎn)擊應(yīng)用程序上的“購(gòu)買(mǎi)”按鈕將觸發(fā)該購(gòu)買(mǎi)過(guò)程。

“Lambda是一個(gè)由事件驅(qū)動(dòng)的執(zhí)行環(huán)境,”AWS的Ian Massingham解釋道, “因此,在非常簡(jiǎn)單的術(shù)語(yǔ)中,只要您有代碼和事件,當(dāng)事件發(fā)生時(shí),代碼會(huì)自動(dòng)為您執(zhí)行。您不必預(yù)先定位資源或創(chuàng)建任何常設(shè)基礎(chǔ)架構(gòu)來(lái)提供執(zhí)行環(huán)境。”

他當(dāng)事件被觸發(fā)時(shí),系統(tǒng)會(huì)自動(dòng)分配基礎(chǔ)設(shè)施來(lái)執(zhí)行代碼:首先在機(jī)器上啟動(dòng)的Linux容器和詳細(xì)信息,然后獲得有關(guān)事件的元數(shù)據(jù),最后將數(shù)據(jù)傳遞到執(zhí)行點(diǎn)。

這與AWS本身內(nèi)部的“傳統(tǒng)”部署模型相反,EC2 (彈性計(jì)算云)實(shí)例運(yùn)行Web服務(wù)器或應(yīng)用程序服務(wù)器,以及確定何時(shí)為他們提供服務(wù)。這為企業(yè)提供了超低成本,使用Lambda時(shí)的執(zhí)行成本為0。而且,它在低使用率時(shí)具有高成本效益,在高使用率時(shí)更具可擴(kuò)展性,因此不管規(guī)模大小都有好處。

Massingham表示,重要的是,Lambda并不完全等同于無(wú)服務(wù)器。 Lambda是執(zhí)行部分,無(wú)服務(wù)器要大一些。“除了計(jì)算之外,您還希望不需要操作基礎(chǔ)架構(gòu)就能運(yùn)行數(shù)據(jù)存儲(chǔ), Lambda就是一種不需要您操作基礎(chǔ)架構(gòu)的方法。

在2016年的主題演講中,亞馬遜CTO Werner Vogels用了一個(gè)比喻:“以前,你的服務(wù)器就像寵物一樣。如果它們生病了,你就得把它們養(yǎng)好。它們像是牛,你必須放他們?nèi)コ圆?。但在無(wú)服務(wù)器中沒(méi)有這樣的牛,只有您的應(yīng)用程序。您甚至不需要考慮恢復(fù)其健康或獲得新的應(yīng)用程序,其中的所有的任務(wù)都能自動(dòng)執(zhí)行。”

有哪些廠商正在提供無(wú)服務(wù)器解決方案?

不過(guò),無(wú)服務(wù)器并不只是對(duì)AWS客戶(hù)可用。IBM OpenWhisk是另一種基于事件的體系結(jié)構(gòu)。谷歌具有云功能,“開(kāi)發(fā)人員可以創(chuàng)建單一用途的、獨(dú)立的功能來(lái)響應(yīng)云事件,而不需管理服務(wù)器或運(yùn)行時(shí)環(huán)境”。類(lèi)似地,微軟也有Azure功能。

2019年4月,谷歌云宣布推出Cloud Run的公共測(cè)試版,這是一個(gè)完全托管的環(huán)境,供客戶(hù)以“無(wú)服務(wù)器”方式部署應(yīng)用程序。

在當(dāng)時(shí)發(fā)布的博客文章中,工程副總裁Eyal Manor和谷歌云產(chǎn)品管理總監(jiān)Oren Teich表示:“傳統(tǒng)的無(wú)服務(wù)器產(chǎn)品遇到了諸如運(yùn)行時(shí)支持受限和供應(yīng)商鎖定等挑戰(zhàn)。開(kāi)發(fā)人員經(jīng)常需要在各種糾結(jié)中選擇:到底選擇無(wú)服務(wù)器帶來(lái)的易用性和速度,還是選擇容器帶來(lái)的靈活性和可遷移性。但在谷歌云,這兩種優(yōu)勢(shì)你可以同時(shí)擁有。”

以前,谷歌用戶(hù)可以使用谷歌云功能有效地運(yùn)行無(wú)服務(wù)器,運(yùn)行客戶(hù)可以“運(yùn)行無(wú)狀態(tài)HTTP驅(qū)動(dòng)的容器,而不必?fù)?dān)心基礎(chǔ)設(shè)施”。然后,客戶(hù)將被按每100毫秒的使用時(shí)間收取費(fèi)用。

Cloud Run基本上可以根據(jù)請(qǐng)求旋轉(zhuǎn)Docker容器,這意味著開(kāi)發(fā)人員可以編寫(xiě)代碼并將其提交到Cloud Run環(huán)境,GCP將負(fù)責(zé)配置和管理服務(wù)器,以及自動(dòng)擴(kuò)展以確??蛻?hù)真正支付他們使用的時(shí)間。

“我們可以做各種專(zhuān)有的緩存和性能增強(qiáng),”Teich說(shuō),“因此,Cloud Run能夠利用我們?cè)谶^(guò)去十年中建立的良好基礎(chǔ),滿(mǎn)足用戶(hù)規(guī)?;约办`活部署需求。”

Cloud Ru還可以與Google Kubernetes Engine(GKE)協(xié)同工作,這意味著客戶(hù)“可以在現(xiàn)有GKE集群上運(yùn)行無(wú)服務(wù)器”。您可以將相同的無(wú)狀態(tài)HTTP服務(wù)部署到GKE集群,同時(shí)抽象出復(fù)雜的Kubernetes概念。”

Oracle還在JavaOne 2017大會(huì)上宣布了與云無(wú)關(guān)的無(wú)服務(wù)器Fn項(xiàng)目。在關(guān)于這個(gè)主題的博客文章中,Gluon和LodgON的聯(lián)合創(chuàng)始人Johan Vos寫(xiě)道:“Fn的一個(gè)關(guān)鍵特征是,雖然它打算在云環(huán)境中運(yùn)行,但它并不依賴(lài)于特定的云供應(yīng)商。平臺(tái)本身可以托管在任何支持Docker的云環(huán)境中。這意味著您可以在Oracle云上運(yùn)行它,但您也可以在自己的基礎(chǔ)架構(gòu)或其他云系統(tǒng)上運(yùn)行它,例如,AWS 、Google云、Microsoft Azure等。”

如何看待無(wú)服務(wù)器的未來(lái)發(fā)展?

2018年11月,亞馬遜CTO Werner Vogels在其“2018年re: create”主題演講時(shí)談到了無(wú)服務(wù)器計(jì)算的發(fā)展軌跡,尤其是它與企業(yè)的關(guān)系。

他表示,通常應(yīng)該是更年輕的、以技術(shù)為導(dǎo)向的企業(yè)率先嘗試這種技術(shù),但我們實(shí)際上看到的是,大型企業(yè)才是真正擁抱無(wú)服務(wù)器技術(shù)的企業(yè)。只需要構(gòu)建業(yè)務(wù)邏輯而不考慮其他任何事情的概念確實(shí)推動(dòng)了無(wú)服務(wù)器的發(fā)展。

吉他制造商芬達(dá)(Fender)也加入了Vogels的行列,該公司使用Lambda觸發(fā)器來(lái)支撐其數(shù)字內(nèi)容流程,并大談其解放開(kāi)發(fā)者、專(zhuān)注于其數(shù)字產(chǎn)品而非基礎(chǔ)設(shè)施的雄心。

Vogels表示,甚至像Fender這樣的傳統(tǒng)企業(yè) 也在走向無(wú)服務(wù)器。無(wú)服務(wù)器的好處是顯而易見(jiàn)的:無(wú)需提供任何服務(wù),它可以自動(dòng)擴(kuò)展,并且具有高度可用性和安全性。最重要的是,你只需為你使用過(guò)的東西付費(fèi)。

AWS Lambda工程總監(jiān)Holly Mesrobian說(shuō):“人們討論過(guò)很多關(guān)于可伸縮性、可靠性、性能、安全性和成本的問(wèn)題。當(dāng)我們構(gòu)建AWS Lambda時(shí)以無(wú)服務(wù)器的方式對(duì)所有這些問(wèn)題進(jìn)行優(yōu)化。”

在增強(qiáng)這些功能時(shí),讓開(kāi)發(fā)人員興奮的是Firecracker的開(kāi)源版本,它允許安全的無(wú)服務(wù)器開(kāi)發(fā),同時(shí)不會(huì)降低性能。

Firecracker擴(kuò)展了它的工作原理,為無(wú)服務(wù)器計(jì)算提供了安全、快速的microVM 。為了實(shí)現(xiàn)安全性,它設(shè)計(jì)的速度非???,在不到125毫秒的時(shí)間內(nèi)啟動(dòng)代碼,創(chuàng)建速度高于每臺(tái)主機(jī)每秒150個(gè)microVM的速度。Firecracker同時(shí)確保了規(guī)模和效率,其內(nèi)存開(kāi)銷(xiāo)低且每個(gè)microVM的內(nèi)存占用量小于5MB,每個(gè)主機(jī)上有數(shù)千個(gè)microVM。

讓開(kāi)發(fā)人員如此激動(dòng)的原因是,它帶來(lái)了Fargate的性能變化,F(xiàn)argate是AWS計(jì)算引擎,允許客戶(hù)無(wú)需管理服務(wù)器或集群即可運(yùn)行系統(tǒng)。

無(wú)服務(wù)器有哪些落地案例?

丹麥網(wǎng)絡(luò)公司Trustpilot是一家真正應(yīng)用無(wú)服務(wù)器的公司。

該公司成為云企業(yè)已經(jīng)有五年了,運(yùn)行由事件驅(qū)動(dòng)的微服務(wù)和REST api組成的高級(jí)體系結(jié)構(gòu)。它在線(xiàn)整合了對(duì)產(chǎn)品和服務(wù)的獨(dú)立評(píng)論,該公司首先“無(wú)服務(wù)器化”,并將在2019年年中關(guān)閉其最后一個(gè)EC2實(shí)例。

它的第一步是確定Trustpilot所謂的“工程原理”,以便在其架構(gòu)中添加“無(wú)服務(wù)器優(yōu)先”。

其原則是:堅(jiān)信無(wú)服務(wù)器(FaaS、BaaS、DBaaS)是云的未來(lái),并站在這一趨勢(shì)的最前沿。目前,無(wú)服務(wù)器可能不是所有企業(yè)的最佳選擇,但是改變正從這里開(kāi)始,虛擬服務(wù)器正在被淘汰。

該公司現(xiàn)已減少運(yùn)行53%的虛擬服務(wù)器,從今180個(gè)到今天的95個(gè)。同時(shí)已經(jīng)擁有283個(gè)容器,比2016年的80個(gè)增加了354%。另外,常規(guī)Lambda功能從40個(gè)增加到252個(gè)。

其他已經(jīng)通過(guò)Lambda將應(yīng)用程序移至無(wú)服務(wù)器的企業(yè)客戶(hù)包括Thomson Reuters、Finra、Hearst、Vevo和Expedia。

在谷歌云中,Teich表示,在過(guò)去一年左右的時(shí)間里使用Alpha Run的客戶(hù)運(yùn)行了大量的程序,他們已經(jīng)取消并轉(zhuǎn)移他們現(xiàn)有的基于Web的數(shù)據(jù)。 他還強(qiáng)調(diào)了Alpha Run在科學(xué)界的受歡迎程度。

總而言之,現(xiàn)在是應(yīng)用無(wú)服務(wù)器的最佳時(shí)機(jī)。

THEEND

最新評(píng)論(評(píng)論僅代表用戶(hù)觀點(diǎn))

更多
暫無(wú)評(píng)論