在過去的12到18個(gè)月里,云計(jì)算出現(xiàn)了巨大的增長(zhǎng)。而在幾年前,我們?nèi)粤?xí)慣于為每個(gè)應(yīng)用程序使用一個(gè)裸金屬服務(wù)器,然后進(jìn)化到虛擬機(jī)管理程序(Hypervisors)和虛擬化,以便從我們有限的物理資源中擠出更多的資源。下一步是通過將這些虛擬機(jī)和實(shí)例拆分為較小的單元——容器,來進(jìn)一步壓縮。我們現(xiàn)在看到的是這種進(jìn)化的下一個(gè)階段——功能即服務(wù)(FaaS),或者說更廣為人知的無服務(wù)器(serverless)。
基本原理
我們一直在尋求辦法以優(yōu)化資源使用和成本,不過,有什么方法能比消除底層操作系統(tǒng)更好呢?對(duì)于大多數(shù)IT項(xiàng)目而言,人們所要做的就是編寫代碼來創(chuàng)建應(yīng)用程序,大部分人并不希望去管理操作系統(tǒng)和它們之間的依賴關(guān)系,或者說不希望去協(xié)調(diào)這些關(guān)系。我們寫好代碼,讓它能夠良好運(yùn)行就是了——無需處理底層設(shè)施。這正是無服務(wù)器發(fā)揮作用的地方。
開拓者——AWS Lambda
就像開拓了云計(jì)算一樣,亞馬遜也是提供這種功能的先驅(qū)者。Lambda的基本概念是讓你上傳代碼(當(dāng)然,它必須是在支持的語言中),不必?fù)?dān)心它是如何部署或擴(kuò)展的——所有這些都是由平臺(tái)來處理的。你的代碼將基于你定義的觸發(fā)器運(yùn)行,它可以是任何消息,從隊(duì)列中的消息到調(diào)度的任務(wù)——擁有很大的靈活性。你只需要根據(jù)你的功能實(shí)際使用時(shí)間和你分配給它的資源的數(shù)量來進(jìn)行付費(fèi)。如果你的代碼每天運(yùn)行12次,那就付只需12次的錢。可用的粒度是如此之細(xì)。除非你是一個(gè)會(huì)大量消耗資源的用戶,否則你就能獲得亞馬遜的免費(fèi)服務(wù)(每月100萬請(qǐng)求免費(fèi))。
OpenStack呢?
在OpenStack中有很多東西都不能作為成熟的服務(wù)提供,也不像AWS的同類服務(wù)那樣成熟。LBaaS和DBaaS是OpenStack社區(qū)多年來嘗試生產(chǎn)的兩個(gè)例子。不幸的是,這些服務(wù)的收效并不讓人滿意,許多企業(yè)拒絕采用它們,因?yàn)槿狈镜墓δ埽词故窃趲状胃轮蟆?/p>
OpenStack社區(qū)已經(jīng)認(rèn)識(shí)到無服務(wù)器基礎(chǔ)設(shè)施的趨勢(shì),并且在OpenStack中也會(huì)有這種服務(wù)的需求。目前,在OpenStack上有兩項(xiàng)提供FaaS的項(xiàng)目,這兩個(gè)項(xiàng)目都得到了商業(yè)公司的支持。
StackStorm
StackStorm將他們的產(chǎn)品定義為“事件驅(qū)動(dòng)的自動(dòng)化平臺(tái)”,并在波士頓的最近一次OpenStack峰會(huì)上進(jìn)行了展示。
正如你在上面看到的,解決方案本身使用了許多其他的OpenStack服務(wù),如Zaquar、Trove和Mistral。問題是,目前的OpenStack部署中大多數(shù)都很少使用這些服務(wù),正如您在下面看到的:
因此,沿著StackStorm路線走下去需要大量的補(bǔ)充,而且在許多方面,這是一個(gè)進(jìn)入未知領(lǐng)域的旅程,因?yàn)楹芏嗳诉@并不是一個(gè)合適的OpenStack項(xiàng)目。
OpenWhisk
OpenWhisk是IBM的一個(gè)項(xiàng)目,也在波士頓OpenStack峰會(huì)上演示過。這個(gè)項(xiàng)目是開源的,可以說它正在成為現(xiàn)代數(shù)據(jù)中心OpenStack(也可能是on - premises)云的實(shí)際解決方案。在波士頓會(huì)議上展示的示例基于文件上載到Swift的具體場(chǎng)景,然后在OpenWhisk上觸發(fā)一個(gè)函數(shù):
成熟
正如您可以從上面的兩個(gè)演示和示例中看到的,無服務(wù)器仍然是一個(gè)“革命尚未成功”的工作。OpenStack社區(qū)本身還沒有決定哪一種解決方案能夠匯聚成一種完全集成的無服務(wù)器解決方案。上面的例子不應(yīng)該被認(rèn)為是完全成熟到任何人都可以在其OpenStack(或on - premises)云上實(shí)際使用的解決方案。
無服務(wù)器會(huì)取代私有云嗎?
越來越多的企業(yè)將他們的工作負(fù)載轉(zhuǎn)移到主要的公有云供應(yīng)商 (AWS、Azure和谷歌),因?yàn)镺penStack的進(jìn)度太慢了。
FaaS總是需要一些基礎(chǔ)的基礎(chǔ)設(shè)施來運(yùn)行實(shí)際的代碼,而且總是需要有一個(gè)操作系統(tǒng)。問題在于你如何將這些功能傳遞給你的終端用戶(關(guān)于如何大規(guī)模實(shí)現(xiàn),Lambda,谷歌云functions,和Azure functions都是目前很好的例子)以及如何把這項(xiàng)服務(wù)無縫銜接到你的其他云供應(yīng)商。
摘要
云計(jì)算專業(yè)人士建議,如果可能的話,你等幾個(gè)周期,等待開源產(chǎn)品和商業(yè)產(chǎn)品成熟,他們可以用在一個(gè)簡(jiǎn)單的和諧的方式完成你的需求。也就是說,不要做第一個(gè)用他們推出的解決方案的人。
如果您有迫切的需要,最好與主要云供應(yīng)商之一進(jìn)行合作,尤其是如果他們已經(jīng)在運(yùn)行您的工作負(fù)載。請(qǐng)注意,并非所有的供應(yīng)商都是兼容的,從一個(gè)解決方案遷移到另一個(gè)解決方案可能是一個(gè)非常復(fù)雜的操作。