在過(guò)去的12到18個(gè)月中,云領(lǐng)域出現了一個(gè)日益增長(cháng)的趨勢。僅僅在幾年前,我們還習慣于為每個(gè)應用程序使用裸機服務(wù)器,然后演變?yōu)闉榱藴p少物理資源的虛擬機管理程序和虛擬化。下一步是通過(guò)將這些虛擬機和實(shí)例分成更小的單元——容器來(lái)進(jìn)一步壓縮。現在看到的是進(jìn)化中的下一個(gè)階段——功能即服務(wù),或者更普遍的說(shuō)法,無(wú)服務(wù)器。
理由
我們不斷尋求優(yōu)化資源的使用和成本。要做到這些,什么是比消除底層操作系統更好的方式?本質(zhì)上,我們大多數人是編寫(xiě)代碼來(lái)創(chuàng )建應用程序。我們不想管理操作系統及其依賴(lài)關(guān)系,也不想編排它們。我們編寫(xiě)代碼,并期望代碼運行,而不必處理下面的所有“管道”。這就是無(wú)服務(wù)器發(fā)揮作用的地方。
先鋒:AWS Lambda
正如我們今天在公有云中使用的許多事情一樣,亞馬遜是使用Lambda提供此功能的先鋒。Lambda的基本概念是允許你上傳代碼(當然必須使用支持的語(yǔ)言之一),而無(wú)需擔心其部署或擴展——所有這一切都由平臺負責。你的代碼將根據你定義的觸發(fā)器運行——可以是從隊列中消息到計劃任務(wù)的任何內容,這帶來(lái)了很大的靈活性。
最棒的是,你支付要為功能實(shí)際使用的時(shí)間和分配到的資源數量付費。不會(huì )僅僅因為你的代碼需要每天運行12次,就要為數小時(shí)的計算機資源和存儲空間花冤枉錢(qián)。你可以使用的粒度非常精細,老實(shí)說(shuō),除非你是非常重度的用戶(hù),否則成本基本為0(亞馬遜每月免費提供100萬(wàn)個(gè)請求)。
OpenStack怎么樣?
OpenStack中有許多不能用作完整服務(wù)的組成部分,并不像AWS中的對應部分那樣強大。LBaaS和DBaaS是OpenStack社區多年來(lái)試圖實(shí)現的兩個(gè)例子。不幸的是,這些服務(wù)與競爭對手相比不占優(yōu)。由于缺乏基本功能,許多企業(yè)即使在多個(gè)發(fā)布周期之后仍不愿意采用這些服務(wù),。
OpenStack社區已經(jīng)認識到了無(wú)服務(wù)器基礎設施的趨勢,并且OpenStack中也將(已經(jīng))出現對這種服務(wù)的需求。目前,有兩個(gè)競爭項目在OpenStack上提供FaaS——這兩個(gè)項目都是由商業(yè)公司支持的。
StackStorm
StackStorm將其產(chǎn)品定義為“事件驅動(dòng)的自動(dòng)化平臺”,并在OpenStack波士頓峰會(huì )上亮相。

從上圖可以看出,該解決方案本身可以利用一些其他OpenStack服務(wù),如Zaquar、Trove和Mistral。但問(wèn)題在于,今天的大部分OpenStack部署在生產(chǎn)中幾乎不使用這些服務(wù),如下所示:

因此,StackStorm路線(xiàn)需要大量修補。它在許多方面都向走向未知的水域,并不被接受為合適的OpenStack項目。
OpenWhisk
OpenWhisk是在OpenStack波士頓峰會(huì )上展示的IBM項目。該項目是開(kāi)源的,可以認為它正在尋求成為現代數據中心的OpenStack(也可能是內部部署)云上無(wú)服務(wù)器的實(shí)際標準解決方案。在波士頓會(huì )議中呈現的示例是文件上傳到Swift的具體場(chǎng)景,然后會(huì )在OpenWhisk上觸發(fā)一個(gè)功能:

成熟度
從上述兩個(gè)演示文稿和示例可以看出,無(wú)服務(wù)器仍然是一項正在進(jìn)行的工作。 OpenStack社區本身尚未決定希望匯聚哪一種解決方案來(lái)為OpenStack提供完全集成的無(wú)服務(wù)器解決方案。上述示例還無(wú)法視為目前任何人都可以在其OpenStack(或本地)云上實(shí)際使用的完全成熟的解決方案。
無(wú)服務(wù)器會(huì )吞下私有云嗎?
越來(lái)越多的企業(yè)將工作負載轉移到主要的公有云提供商(AWS、Azure和Google)。
這不一定與無(wú)服務(wù)器無(wú)關(guān),而是與整體的aaS功能有關(guān)。FaaS始終需要一些底層基礎架構來(lái)運行實(shí)際的代碼,而且總是需要一個(gè)操作系統。如何把它無(wú)縫和無(wú)形地提供給最終用戶(hù)(Lambda、Google Cloud功能和Azure功能是如何規模化實(shí)現的非常好的例子),以及如何將該服務(wù)與所有云端的其他產(chǎn)品聯(lián)系起來(lái),是問(wèn)題所在。
總結
專(zhuān)業(yè)人士建議,如果可能,你還可以等待更多的OpenStack發(fā)布,讓開(kāi)源產(chǎn)品和產(chǎn)品成熟到可以簡(jiǎn)單和諧的方式使用。
如果有迫切需要,則建議你與某一家主要的云提供商進(jìn)行溝通,特別是如果它們已經(jīng)在運行你的工作負載。請注意,并不是所有的提供商都相互兼容——從一個(gè)解決方案遷移到另一個(gè)解決方案可能是一個(gè)非常復雜的操作。